- Rust Project Primer
- Preface
- 1. Introduction
- 1.1. Why Rust?
- 1.2. Resources
- 2. Development Environment
- 2.1. Zed
- 2.2. Visual Studio Code
- 2.3. RustRover
- 3. Continuous Integration
- 3.1. GitLab CI
- 3.2. GitHub Actions
- 4. Build system
- 4.1. Cargo
- 4.2. Bazel
- 4.3. Buck2
- 4.4. Nix
- 4.5. Meson
- 5. Organization
- 5.1. Packages
- 5.2. Workspace
- 5.3. Repository
- 6. Ecosystem
- 6.1. Logging
- 6.2. Metrics
- 6.3. Error handling
- 6.4. Serialization
- 6.5. Parsing
- 6.6. Concurrency
- 6.7. Web Backend
- 6.8. Web Frontend
- 6.9. User Interface
- 6.10. Rendering
- 6.11. Embedded
- 7. Interop
- 7.1. C
- 7.2. C++
- 7.3. Dart
- 7.4. Erlang
- 7.5. Haskell
- 7.6. JavaScript
- 7.7. Java
- 7.8. OCaml
- 7.9. Python
- 7.10. Ruby
- 7.11. Swift
- 8. Checks
- 8.1. Formatting
- 8.2. Lints
- 8.3. Semantic Versioning
- 8.4. Dependency Minimum Versions
- 8.5. Unused Dependencies
- 8.6. Auditing Dependencies
- 8.7. Outdated Dependencies
- 8.8. Cargo Manifest
- 8.9. Crate Features
- 8.10. Minimum Supported Rust Version
- 8.11. Conclusion
- 9. Testing
- 9.1. Unit Tests
- 9.2. Integration Tests
- 9.3. Runners
- 9.4. External Services
- 9.5. Snapshot Testing
- 9.6. Property Testing
- 9.7. Fuzzing
- 9.8. Mutation Testing
- 9.9. Dynamic analysis
- 9.10. Conclusion
- 10. Measure
- 10.1. Coverage
- 10.2. Performance
- 10.3. Memory
- 11. Building
- 11.1. Optimizations
- 11.2. Performance
- 11.3. Codegen
- 11.4. Caching
- 11.5. Linking
- 11.6. Cross-Compiling
- 12. Documentation
- 12.1. Repository
- 12.2. Diagrams
- 12.3. Code Documentation
- 12.4. Book
- 12.5. Architecture
- 12.6. Design
- 12.7. Examples
- 13. Releasing
- 13.1. Changelog
- 13.2. Versioning
- 13.3. Crate Registry
- 13.4. Containerize
- 13.5. Packaging
- 14. Tools
- 14.1. Code Search
- 14.2. Task Runners
- 14.3. Readme
- 14.4. Watch Files
- 14.5. Expand Macros
- 14.6. Debugging
- 15. Examples
- 16. Conclusion
- License
- Privacy Policy