{"id":16376554,"url":"https://github.com/killercup/talk-rust-all-hands-cli","last_synced_at":"2026-04-07T05:30:17.919Z","repository":{"id":66475236,"uuid":"126897693","full_name":"killercup/talk-rust-all-hands-cli","owner":"killercup","description":null,"archived":false,"fork":false,"pushed_at":"2018-03-26T22:39:33.000Z","size":1544,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-01T08:17:28.667Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://killercup.github.io/talk-rust-all-hands-cli/","language":"CSS","has_issues":false,"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/killercup.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-26T22:33:15.000Z","updated_at":"2018-04-04T16:38:58.000Z","dependencies_parsed_at":"2023-06-01T13:00:43.715Z","dependency_job_id":null,"html_url":"https://github.com/killercup/talk-rust-all-hands-cli","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/killercup%2Ftalk-rust-all-hands-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/killercup%2Ftalk-rust-all-hands-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/killercup%2Ftalk-rust-all-hands-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/killercup%2Ftalk-rust-all-hands-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/killercup","download_url":"https://codeload.github.com/killercup/talk-rust-all-hands-cli/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239970661,"owners_count":19727010,"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-10-11T03:25:07.939Z","updated_at":"2026-04-07T05:30:17.859Z","avatar_url":"https://github.com/killercup.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\ntitle: \"Writing CLIs in Rust is awesome\"\nsubtitle: \"…and it's getting even better\"\nauthor: Pascal Hertleif\ndate: 2018-03-28\ncategories:\n- rust\n- presentation\ntheme: white\nprogress: true\nslideNumber: true\nhistory: true\n---\n## Hi, I'm Pascal\n\n{[twitter],[github]}.com/killercup\n\n[twitter]: https://twitter.com/killercup\n[github]: https://github.com/killercup\n\n::: notes\n\nSuper excited to be here at the first ever Rust All Hands!\nYesterday was surprisingly productive,\nand it was super awesome to meet so many new real-life people\nwho I happen to already know from the Internet.\n\n:::\n\n# What we want to do\n\n- - -\n\n- famous crates: work with their authors to improve and stabilize\n- write guide-level documentation\n\t- pitching Rust as a great lang for CLIs on the new website\n\t- for specific crates and use cases\n\n# Survey\n\n- - -\n\n- 1,045 replies\n- we'll post pretty pictures soon\n\n- - -\n\n![](./assets/gaps.svg)\n\n# Areas we are focussing on\n\n## Handling CLI input should be concise\n\n- clap 3.0 with custom derive\n- config files, env vars, CLI flags build a configuration\n\t- best-practice-as-a-crate\n\n## Outputting stuff in CLI should be frictionless\n\n- streaming and pipe handling\n- logging\n\t- for humans and machines\n\t- best-practice-as-a-crate\n\n## Testing\n\n- assert_cli refactoring \u0026 1.0\n- guide on testing cli apps\n\n## Distributing\n\n- Coordinate and consolidate already existing efforts\n- we can't do everything, but we can provide guidelines and scaffolding!\n\n# This is happening fast\n\n## Quicli\n\n- re-exports commonly used items from other crates, e.g. structopt's derive\n- provides helpers like read_file (`-\u003e String`)\n- gives you a `main!` so you can do `?` \"in main\" (and get logging set up)\n\n- - -\n\n- since quicli 0.1 in january:\n\t- rayon 1.0 shipped\n\t- failure 1.0 announced\n\t- CLI WG started\n- quicli might become obsolete soon!\n\t- clap 3 with include a custom derive (ETA: Before Rust 2018)\n\t- `std::fs::read_string` (bikeshed half painted)\n\t- `?` in main will be stable _very soon_\n\n- - -\n\n…please keep doing this, folks\n\n# Thanks!\n\n## Come to the CLI WG meeting at 10pm in the \"Snow\" room\n\nSlides available at [git.io/rust-all-hands-cli-wg](https://git.io/rust-all-hands-cli-wg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkillercup%2Ftalk-rust-all-hands-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkillercup%2Ftalk-rust-all-hands-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkillercup%2Ftalk-rust-all-hands-cli/lists"}