{"id":45667514,"url":"https://github.com/jrollin/rust-cli-workshop","last_synced_at":"2026-02-24T10:11:05.978Z","repository":{"id":128423813,"uuid":"503800747","full_name":"jrollin/rust-cli-workshop","owner":"jrollin","description":"Workshop to learn and practice Rust by building CLI (ongoing)","archived":false,"fork":false,"pushed_at":"2025-07-30T12:57:18.000Z","size":130,"stargazers_count":19,"open_issues_count":1,"forks_count":11,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-21T15:59:45.215Z","etag":null,"topics":["cli-app","learning-by-doing","rust","workshop"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jrollin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2022-06-15T14:29:26.000Z","updated_at":"2026-01-10T00:34:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"b939efaa-a758-46f2-aa81-0a7cfd4f9eee","html_url":"https://github.com/jrollin/rust-cli-workshop","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jrollin/rust-cli-workshop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrollin%2Frust-cli-workshop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrollin%2Frust-cli-workshop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrollin%2Frust-cli-workshop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrollin%2Frust-cli-workshop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jrollin","download_url":"https://codeload.github.com/jrollin/rust-cli-workshop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrollin%2Frust-cli-workshop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29779271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T04:54:30.205Z","status":"ssl_error","status_checked_at":"2026-02-24T04:53:58.628Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cli-app","learning-by-doing","rust","workshop"],"created_at":"2026-02-24T10:11:05.187Z","updated_at":"2026-02-24T10:11:05.973Z","avatar_url":"https://github.com/jrollin.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Rust](https://github.com/jrollin/rust-cli-workshop/actions/workflows/rust.yml/badge.svg)](https://github.com/jrollin/rust-cli-workshop/actions/workflows/rust.yml)\n\n![screenshot](app.png)\n\n# Learn Rust by building Command Line Application\n\nRepository used for workshop\n\n- [DevFest 2022](https://devfest2022.gdgnantes.com/sessions/apprenez_rust_pas_a_pas_en_construisant_une_application_en_ligne_de_commande)\n- [Touraine Tech 2023](https://2023.touraine.tech/talk/8Y1SA6Pfjj2LIrbUa037)\n- [Devoxx France 2023](https://www.linkedin.com/posts/julien-rollin_devoxx2023-rust-workshop-activity-7052547713011175424-Y9eJ?utm*source=share\u0026utm_medium=member_desktop\u0026rcm=ACoAAASjY7MBTgDoEfy3CVx-9lB7ne*-jg9ZcGk)\n\n## :dart: What we will build\n\n🦀 Crabby command line !\n\n```\n$ crabby --help\n\nCrabby cli\n\nUsage: crabby_api \u003cCOMMAND\u003e\n\nCommands:\n  greets    Greets with name\n  chifoumi  Play chifoumi with players\n  search    Search news by keyword\n  help      Print this message or the help of the given subcommand(s)\n\nOptions:\n  -h, --help     Print help\n  -V, --version  Print version\n```\n\n## :pencil: Requirements\n\nYou'll need to install:\n\n- [Rust installation instructions](https://www.rust-lang.org/tools/install)\n\nTLDR;\n\n```bash\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n```\n\n:warning: Note on Windows\n\nRust requires certain C++ build tools.\nYou can either download the [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/), or (recommended) you might prefer just to install [Microsoft Visual Studio](https://visualstudio.microsoft.com/downloads/).\n\n[More about Installation setup on windows](https://learn.microsoft.com/en-us/windows/dev-environment/rust/setup)\n\n### Verify your toolchain version\n\nMinimum Version : 1.72+ (tested with 1.8.8)\n\n```bash\nrustc --version\n```\n\n```bash\nrustc 1.72.1 (d5c2e9c34 2023-09-13)\n```\n\nKeep your rust up-to-date with the latest release of rust, type:\n\n```bash\nrustup update\n```\n\n### Choose your IDE\n\n- VS Code:\n  - [Rust Analyzer Language Server Protocol](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)\n  - [TOML](https://marketplace.visualstudio.com/items?itemName=bungcip.better-toml)\n- Jetbrains Rust:\n  - https://www.jetbrains.com/fr-fr/rust/\n- Vim/Neovim plugin :\n  - https://github.com/simrat39/rust-tools.nvim\n\n[More tools on Rust website](https://www.rust-lang.org/tools)\n\n### Alternative to IDE\n\n\u003e When your computer is annoying or you are not admin...\n\n- Online Playground\n  - https://play.rust-lang.org/\n- gitpod (inside brower or in your IDE)\n  - [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/jrollin/rust-cli-workshop)\n\n## :pencil: Workshop instructions\n\n- [Part 1 - Env setup](./1_setup)\n- [Part 2 - Syntax](./2_syntax)\n- [Part 3 - Command args and options](./3_args)\n- [Part 4 - Modules and conversion](./4_mod)\n- [Part 5 - Better command help documenter son application](./5_cli)\n- [Part 6 - Api call with Json Parsing](./6_api)\n\n### :eyes: Solutions\n\n\u003e :exclamation: Try your solution first. Errors help to learn with Rust\n\nEach part have a working solution\n\n```bash\n// inside each directory\ncd \u003cpartx\u003e/solutions\ncargo run\n```\n\nRun solutions :\n\n```bash\n// from git root directory\ncargo run --bin crabby_setup\ncargo run --bin crabby_syntax\ncargo run --bin crabby_args\ncargo run --bin crabby_cli\ncargo run --bin crabby_api\n```\n\n\u003e bin name is defined in related `\u003cpartx\u003e/solutions/Cargo.toml` files\n\n### :zap: Tests\n\n\u003e You are not required to write test during workshop but it always a good pratice so have a look !\n\n```bash\n// all\ncargo test\n\n//specific\ncargo test --bin crabby_setup\ncargo test --bin crabby_syntax\ncargo test --bin crabby_args\ncargo test --bin crabby_mod\ncargo test --bin crabby_cli\ncargo test --bin crabby_api\n```\n\n## :books: Additional resources\n\n- [Rust Book](https://doc.rust-lang.org/book/)\n- [Rust by Example](https://doc.rust-lang.org/rust-by-example/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrollin%2Frust-cli-workshop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjrollin%2Frust-cli-workshop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrollin%2Frust-cli-workshop/lists"}