Introduction
Index of examples
Language
❱
Rust installation and first steps
Main function
Simple data types
Variables and constants
Ownership and borrowing
Slices
Functions
Control flow
Structs
Enums
Traits
Trait objects
Attributes
Generics
Lifetimes
Modules and use keyword
Pattern matching, if / while let
Closures
Iterators
Macros
Standard library
❱
Option
Result
Vectors
HashMap
Strings
Copy-on-write
Smart pointers
AsRef
Automatic trait derivation
Crates
❱
Crates (alphabetic)
Crates (by category)
Algorithms
❱
Generate random values
Sort a vector
Asynchronous
❱
Async
Async and traits
Tokio async runtime
Async channels
Streams
Futures crate
Mixing async and blocking code
Utilities
Authentication
❱
Basic Authentication
Caching
❱
LRU caching
Command-line interface
❱
Argument parsing
ANSI terminal
Terminal user interfaces
User interaction
Command-line utilities
❱
Filesystem
Networking
Shells
Compression
❱
Working with tarballs
Flate2
Concurrency
❱
Explicit threads
Threadpools
Multithreading with crossbeam
Data parallelism
Message passing and Channels
Shared-state concurrency
Concurrent data structures
Send and Sync
Configuration
❱
Environment variables
Configuration management
Cryptography
❱
Hashing
Password hashing
Encryption
AEAD
Signatures
HMAC
Certificates
TLS
Cryptographic Utilities
Data structures
❱
Maps
B-trees
Stacks and queues
Binary Heaps
Linked lists
Bitfields
Heapless data structures
Stack-allocated arrays
UUIDs
Database access
❱
SQLite
Postgres
MSSQL
Oracle
Connection pools
Query builders and ORMs
NoSQL
KV stores
Search
AMQP
Database implementations
❱
Databases
Search
Date and time
❱
Duration and calculation
Parsing and displaying
time crate
Development tools
❱
Cargo
❱
Package layout
Crate registries
Rust and binary installation
❱
Rustup
Code editing
Code formatting
Documentation
❱
mdBook
Badges
Versioning
Other
❱
Code building
Code verification
miri
Development tools - build-time tooling
❱
Build-time tools
Development tools - cargo plugins
❱
Writing code
Code formatting, linting
Building
Cross-compiling
Watching for changes
Improving performance
Auditing
Maintaining
Development tools - debugging, logging
❱
Tracing
Log messages
Logging configuration
Alternatives
Diagnostic functions
Development tools - performance, profiling
❱
Benchmarking
Low-level profiling tools
Memory usage analysis
Development tools - testing
❱
Testing
Fuzzing
Encoding and serialization
❱
Character sets
CSV processing
Structured data
Serialization with serde
Typecasting
Binary encoders, no external schema
Error handling
❱
Error customization
File system
❱
Read & write
Current working directory
Directory traversal
File watching
Temporary files and directories
User directories
Hardware support
❱
Processor
Mathematics
❱
Linear algebra
Trigonometry
Complex numbers
Statistics
Additional numeric types
Memory management
❱
Global static
Lazy initialization
Network Programming
❱
Server
Reverse_proxy
Operating systems
❱
External commands
Low-level system calls
Rust OSes
Operating systems - Windows
❱
Windows
Parser implementations
❱
HTML
INI
JSON
Markdown
TOML
XML
YAML
Programming languages
Rust patterns
❱
Design patterns
Functional programming
Template engines
❱
Tera
TinyTemplate
Text editors
❱
IDEs
Text processing
❱
Regular expressions
❱
Longer regex example
String parsing
String concatenation
Web programming
❱
Extracting links
URL
Media types
Web programming - HTTP clients
❱
HTTP clients
Making requests
Calling a web API
Downloads
Web programming - HTTP servers
❱
Other web frameworks
Static website generators
Middleware
CORS
Links
❱
Links
Example code
Cheat sheets
Blogs
Books
Companies
Learning
Contributing
❱
Topics of interest
Repository structure
Environment setup
Editing
Dev Containers and Docker
Optional preprocessors
API documentation
Crate publication
Index
Thanks
Light
Rust
Coal
Navy
Ayu
The Rust How-to Book
Binary Heaps
Recipe
Crates
Categories
Implement a priority queue