- To run any of them, install rust tool chain - https://www.rust-lang.org/tools/install
- To run a program, run following command with package name as folder name of the crate inside
cratesfolder and args for that program. Check the readme inside that folder to know about its arguments -
cargo run -p <package_name> -- <args>
Ex.- cargo run -p cprs -- -r source_dir destination_dir
- Description - Windows tree command but with json output.
- Target concepts -
- fs - reading file system
- io - writing files
- serde - de/serialization
- regex - pattern matching
- async - IO bound application (reads hierarchy of directory including all files)
- Further changes -
- clap - better parameter handling
- Description - Terminal shell that takes commands, parses and runs them.
- Target concepts -
- process - process execution
- Further changes -
- clap - better parameter handling
- Description - Sudoku companion app that solves a given arrangement using human strategies in an event driven manner.
- Target concepts -
- thread - multiple threads handling various evaluations
- sync -
- Arc - Sharing game state with all threads.
- Mutex - Keeping game state updates synchronised.
- channel - Using for data and control sugnals to be passed between game client and game controller.
- Further changes -
- Rwlock (instead of Mutex) - Game state is read heavy, parallel reads should be allowed and lock should be only during writes.
- Future (instead of channel) - If the goal is to control the progress of game based on user input, futures can provide the same based on their inherent design of lazy evaluation.
- More sudoku strategies - Add more strrategies that can solve more puzzles.
- Description - Simplest implementation of a brick breaker game.
- Target concepts -
- thread - handling both rendering and user input concurrently.
- sync -
- Arc - Sharing game state with both threads.
- Mutex - Keeping game state updates synchronised.
- console - TUI framework - rendering and user input.
- Further changes -
- async and tokio - better state management and concurrency
- Playability - Larger bricks, faster response time to user control.
- Description - Data copier tool for large amounts of data
- Target concepts -
- win_tree - Used to walk and build tree for given path
- io - Used to perform copying of one path to given location
- thread - Threads to listen to events from transfer process and update status
- rayon - parallellisation of transfer logic
- Further changes -
- async - Test if there is any benefit of transfer-async.
- benchmark - Benchmarking performance against deep and wide trees and ssd and hdd.
torrentrs [Split and moved to https://gitlab.com/saurabh.2561/torrentrs]
- Description - Torrent downloader in terminal
- Target concepts -
- thread -
- sync -
- net -
- async -
- crossterm -
- fs -
- io -
- Further changes -
- Description - Essentially a tokio clone. To learn underlying system calls such as select and epoll and new non-blocking IO construct such as io_uring.
- Target concepts -
- async io -
- async net -
- Further changes -
- References -
- https://rust-lang.github.io/async-book/02_execution/02_future.htmls
- https://pages.cs.wisc.edu/~remzi/OSTEP/threads-events.pdf
- https://github.com/Gilnaa/epoll-rs/
- https://www.zupzup.org/epoll-with-rust/index.html
- https://blog.pjam.me/posts/select-syscall-in-rust/
- https://mbinjamil.dev/writings/understanding-async-io/
- Description - Workflow orchestration tool - similar to dagger or Uber cadence. Refer to awesome-workflow-engines repo for more knowledge.
- Target concepts -
- thread -
- sync -
- net -
- async -
- Further changes -
- https://this-week-in-rust.org/
- https://kerkour.com/
- https://blog.yoshuawuyts.com/
- https://smallcultfollowing.com/babysteps/
- Small-Medium projects (<1k stars, <1k commits) - easy to go through and learn from.
- bytes - Zero cost bytes buffer management library - essentially an
Arc<Vec<u8>>. - anyhow - Error wrapper for easier propagation, diplay and debugging.
- bendy - Bencode (bittorrent metainfo file encoding) encoder/decoder.
- console - Terminal manipulator for building CLIs.
- flamegraph - Flamegraph profiler for binaries.
- sysinfo - Cross platform system information (process, memory, disk, network, devices) library.
- sig - Interactive grep on a stream
- ncspot - Spotify terminal client
- bytes - Zero cost bytes buffer management library - essentially an
- Fairly large projects
- vector - Observability pipeline.
- memorysafety - Infrastructure wide low-level tools built in a memory-safe manner at https://www.memorysafety.org/.
- hyperswitch - Open Payment Gateway (By Juspay)
- rustdesk - Remote Desktop (Same as Teamviewer)
- rqbit - Torrent client.
- nix - Abstractions for Unix kernel APIs, essentially more refined wrappers on libc functions.
- Also check
- https://lib.rs/ - index of crates.io
- Awesome-rust
- Idiomatic rust index
- Github (search(<100 stars, updated since May, 2024) and trending)