{"id":22350945,"url":"https://github.com/johnae/paperstack","last_synced_at":"2025-07-02T22:36:28.126Z","repository":{"id":59610582,"uuid":"536763374","full_name":"johnae/paperstack","owner":"johnae","description":null,"archived":false,"fork":false,"pushed_at":"2022-09-18T14:55:41.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-31T13:12:46.287Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/johnae.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-09-14T21:21:18.000Z","updated_at":"2022-09-14T21:22:26.000Z","dependencies_parsed_at":"2022-09-25T17:41:06.583Z","dependency_job_id":null,"html_url":"https://github.com/johnae/paperstack","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnae%2Fpaperstack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnae%2Fpaperstack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnae%2Fpaperstack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnae%2Fpaperstack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnae","download_url":"https://codeload.github.com/johnae/paperstack/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245650195,"owners_count":20650098,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-04T12:11:51.365Z","updated_at":"2025-03-26T11:45:14.084Z","avatar_url":"https://github.com/johnae.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# A toy transaction engine written in Rust\n\nThis is a toy transaction engine written in Rust. It can be used like this:\n\n```sh\ncargo run -r -- sampledata/transactions.csv\n```\n\nUnit tests can be run like this:\n\n```sh\ncargo test\n```\n\nIt's been tested with larger data sets and performs ok for some definition of ok I guess :-). I'm sure this could be further optimized in multiple ways. What was guiding me at this point was mainly to use as few dependencies as possible and to keep it reasonably simple.\n\nIt uses the [Decimal crate](https://crates.io/crates/rust_decimal) as this engine makes financial calculations and f64 and friends can result in round-off errors.\n\nIt also uses [anyhow](https://crates.io/crates/anyhow) for easy error handling which seemed appropriate in this context. Other than that the [csv crate](https://crates.io/crates/anyhow) and [serde](https://crates.io/crates/anyhow) are used to deserialize csv input and serialize csv output.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnae%2Fpaperstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnae%2Fpaperstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnae%2Fpaperstack/lists"}