Little exercises for learning Rust and building awesome cli tools! ⭐️

Overview

rust-cli-exercises

Little exercises for learning Rust and building awesome cli tools! ⭐️


What's Here

This repo is a collection of many extremely small Rust projects.

This idea is to break down otherwise scary Rust code into small, approachable, and easily testable little functions.


How To Work Through The Examples

The numbers prefixing each folder are meant to be a recommended path to following in exploring these projects, but feel free to jump around as they are completely independent of each other!

Each folder is a completely independent Rust project, created with the cargo new my_project_name command.

Each project has a README that explains the problem being solved and skills practiced.


Build Your Own "Rust Toolbox"

By building little Rust applications like these you are documenting how to accomplish and test different things you might want a command line utility to do.

If you starting building your own portfolio of Rust cli tools then one day when you actually want to solve some business problem with Rust you won't be starting from scratch and can use some of your old code and/or experiences to help you!


Solutions

If you really get stuck and want to see Jim's solutions, see the rust-cli-examples repo.

It is highly recommended to work through them on your own because by just reading the final code you are missing out on seeing all the compiler and linter errors along the way that led the code to end up this way...


Hints

If you get stuck and have the urge to go look at the example solution, wait! First take a peek at the Hint.md file in the project to see if that gets you past your blocker!


Running The Projects

First ensure you have rust and cargo installed:

cago --version

You can then navigate into each project folder and run the cli tool:

cargo run

Note: look for tips and information for a better understanding in the rust source code files of each project

You can also run the automated tests:

cargo test

Note: This runs both unit tests and integration tests!

In addition to just running the tests, you can check code coverage:

cargo tarpaulin --out Html

Then view the tarpaulin-report.html file in a browser.

You can also run mutation tests to test your tests!

cargo mutate

Why Rust For CLI Tools?

There are just a few reasons why Rust makes an excellent language for writing command line utilities:

  • Fast Startup & Execution Time

    Often times there is a delay on startup and during heavy processing for languages with a garbage collector.

    Since Rust CLI programs do not have to boot up a vm or gc they can extremely fast, thus saving developer time, energy, and happiness in addition to company dollars!

  • Low Level Control With A Nice Syntax

    The borrowing, lifetimes, and mut keyword gives the programmer very fine control over memory usage

  • Cargo Is Awesome

    Cargo makes it very easy to build and deploy cli tools, and not just to cargo- you can also publish your super efficient binary to other package managers like npm!

  • Coding In Rust Is Fun!!

    Once you get the hang of it you may find that you actually really enjoy working on projects in Rust. There is a reason why it is voted the "Most Loved Programming Language" on the Stack Overflow survey every year!


Contributing

Have a cool little cli tool you want to show off to others? Feel free to add a pull request! Also, feel free to open an issue just to discuss before hand or if you have any questions about the code / projects here.


MIT Open Source

Feel free to copy, modify, or distribute this code for your own personal or commercial use. Use at your own risk!


Thanks!

Feel free to reach out to @JimLynchCodes on other platforms. Thanks for stopping by! ⭐️

You might also like...
 (Pre-Release Software) Secure, Encrypted, P2P chat written atop Warp, IPFS, LibP2P, Dioxus and many more awesome projects and protocols.
(Pre-Release Software) Secure, Encrypted, P2P chat written atop Warp, IPFS, LibP2P, Dioxus and many more awesome projects and protocols.

Uplink Privacy First, Modular, P2P messaging client built atop Warp. Uplink is written in pure Rust with a UI in Dioxus (which is also written in Rust

An awesome language and its compiler.

Calocom Project Build Build with cargo-make Just run cargo make in the root directory of the project. Or, if you want to build it in release mode, run

rust awesome(资源). 💥
rust awesome(资源). 💥

Rust Boom 💥 Rust Boom 是一个仓主在学习使用 Rust 的时候,对 Rust 的一些难点的解决方法以及一些 Rust 开源的好玩的库、书籍、文章的整理,希望可以帮助更多的 Rust 初学者来翻过 Rust 这座大山。 TOC Rust Boom 💥 TOC Blasting

Super-lightweight Immediate-mode Embedded GUI framework, based on the awesome embedded-graphics library. Written in Rust.

Kolibri - A GUI framework made to be as lightweight as its namesake What is Kolibri? Kolibri is an embedded Immediate Mode GUI mini-framework very str

Rust awesome(资源). 💥
Rust awesome(资源). 💥

Rust Boom 💥 Rust Boom 是一个仓主在学习使用 Rust 的时候,对 Rust 的一些难点的解决方法以及一些 Rust 开源的好玩的库、书籍、文章的整理,希望可以帮助更多的 Rust 初学者来翻过 Rust 这座大山。 TOC Rust Boom 💥 TOC Blasting

awesome fullstack rust web framework, made by axum & shaku & yew

Awesome Rust Full Stack Web Framework With Axum && shaku && yew, this repository represents how can we construct new web server used by rust. Still in

Zash - A Zuper Awesome Shell
Zash - A Zuper Awesome Shell

Zash - A Zuper Awesome Shell Welcome to zash, its activily being developed and is not near a stable release. Installation Arch: yay -S zash Paru seem

The awesome-app Command Line Interface

Rust CLI to create Awesome Applications with Rust. More info at awesomeapp.org Install cargo install awesome-app Create your first app: # Create you

Awesome-like workspaces for Hyprland

Hyprsome Hyprsome is a binary that interacts with Hyprland's Unix socket to make workspaces behave similarly to AwesomeWM in a multi-monitor setup. If

Owner
Software artisan, engineer, teacher, student, learner, coder, person... Loves pair programming and TDD'ing some code. ✨
null
An awesome CLI tool for effectively learning Rust and more. Project winner of the RustFi 2022 hackathon

rlrn An awesome CLI tool for effectively learning Rust and more Table of Contents About The Project Built With Getting Started Prerequisites Installat

Victor Kostyuk 6 Dec 25, 2022
Striving to create a great Application with full functions of learning languages by ChatGPT, TTS, STT and other awesome AI models

Striving to create a great Application with full functions of learning languages by ChatGPT, TTS, STT and other awesome AI models, supports talking, speaking assessment, memorizing words with contexts, Listening test, so on.

null 155 Apr 20, 2023
Noir, Circom, and Halo2 exercises for DSL workshop at ZKSummit10

ZKSummit10 - Exploring Noir, Circom, halo2 Workshop Prompt Write Noir, Halo2 and Circom circuits that constrain integer division i.e decimals are trun

Richard Liang 4 Sep 21, 2023
Mercy is a public Rust crate created to assist with building cybersecurity frameworks, assessment tools, and numerous other projects

Mercy ?? Documentation Mercy is a public Rust crate created to assist with building cybersecurity frameworks, assessment tools, and numerous other pro

Umiko Security 2 Nov 27, 2022
Mercy is a public Rust crate created to assist with building cybersecurity frameworks, assessment tools, and numerous other projects

Mercy ?? Documentation Mercy is a public Rust crate created to assist with building cybersecurity frameworks, assessment tools, and numerous other pro

CyberSuki 2 Nov 27, 2022
⚙️ A curated list of static analysis (SAST) tools for all programming languages, config files, build tools, and more.

This repository lists static analysis tools for all programming languages, build tools, config files and more. The official website, analysis-tools.de

Analysis Tools 10.7k Jan 2, 2023
A toolkit for building your own interactive command-line tools in Rust

promkit A toolkit for building your own interactive command-line tools in Rust, utilizing crossterm. Getting Started Put the package in your Cargo.tom

null 70 Dec 18, 2022
A CLI tool to get help with CLI tools 🐙

A CLI tool to get help with CLI tools ?? halp aims to help find the correct arguments for command-line tools by checking the predefined list of common

Orhun Parmaksız 566 Apr 16, 2023
'apk-yara-checker' is a little CLI tool written in Rust to check Yara rules against a folder of APK files.

apk-yara-checker 'apk-yara-checker' is a little CLI tool written in Rust to check Yara rules against a folder of APK files. You have to pass the folde

alberto__segura 15 Oct 5, 2022
Curated list of awesome projects and resources related to Rust and computer security

Awesome Rust Security Curated list of awesome projects and resources related to Rust and computer security Table of Contents Tools Web and Cloud Secur

Alan 131 Jan 1, 2023