Welcome to the Ultralytics Rust Project Template! This repository provides a standardized foundation for initiating Rust projects at Ultralytics. It incorporates best practices in project structure, configuration, and essential tooling to streamline development. By using this template, Ultralytics developers can ensure consistency, maintain high quality standards, and accelerate the setup process for new Rust-based software.
This template is organized for intuitive navigation and a clear understanding of Rust project components.
src/lib.rs: Core library code for the crate.src/main.rs: Example binary entrypoint that exercises the library.tests/: Integration tests executed withcargo test.docs/: Optional Markdown docs that complement Rustdoc output.Cargo.toml: Package metadata, dependencies, and workspace configuration..gitignore: Git ignore rules tailored for Cargo builds and IDEs.LICENSE: Project license file (default AGPL-3.0-or-later)..github/workflows/: GitHub Actions for CI, formatting, and publishing the crate.
your-project/
โ
โโโ src/ # Library and binaries
โ โโโ lib.rs
โ โโโ main.rs
โโโ tests/ # Integration tests
โ โโโ basic.rs
โโโ docs/ # Additional Markdown docs (optional)
โ โโโ README.md
โโโ .github/workflows/ # CI, formatting, publish pipelines
โ โโโ ci.yml
โ โโโ format.yml
โ โโโ publish.yml
โโโ .gitignore # Git ignore rules for Rust
โโโ Cargo.toml # Cargo package metadata
โโโ LICENSE # Project license file
โโโ README.md # This file
The src/ directory contains both the reusable library (lib.rs) and an example binary (main.rs). Expand the library
with modules as the crate grows, and keep binaries thin wrappers that delegate to library functions.
Integration tests in tests/ validate user-facing behavior. Add unit tests alongside the code they cover in src/ and
run everything with cargo test.
Keep Markdown guides in docs/ for onboarding and architecture notes. Rustdoc generated from src/ remains the source
of truth for API documentation (cargo doc --open).
Kickstart your new Rust project using this template:
- Create Your Repository: Click "Use this template" on GitHub to generate a new repository. Update the remote URL in your local clone.
- Customize: Adjust
Cargo.toml(package name, description, authors), refresh thisREADME.md, and tailor.github/workflows/*.ymlas needed. - Develop: Add modules to
src/lib.rs, binaries tosrc/bin/orsrc/main.rs, and integration tests totests/. - Validate: Run
cargo fmt,cargo clippy --all-targets --all-features -- -D warnings, andcargo testlocally. - Document: Keep code-level docs up to date with
///comments and expanddocs/for guides or ADRs.
Install Rust via rustup and then:
cargo fmt
cargo test
cargo runUsing the published crate from another project (after release):
# Cargo.toml
[dependencies]
ultralytics-template-rust = "0.0.1"use ultralytics_template_rust::add_numbers;
fn main() {
let sum = add_numbers(1, 2);
println!("Sum: {sum}");
}- Publishes on
mainpushes when a newv<version>tag is needed; manual runs supportdry_run: true. - Crate name:
ultralytics-template-rust; tags followv<version>fromCargo.toml. - Requires repository secrets:
CARGO_REGISTRY_TOKEN(crates.io),GITHUB_TOKEN(built-in), andOPENAI_API_KEYfor AI release notes. - Workflow guards: fmt, clippy, tests must pass; tag/release are created only after a successful publish.
For Ultralytics team members and external contributors:
- Clone the newly created repository based on this template to start working locally.
- Keep
README.mdandCargo.tomlaligned with the crateโs purpose and public API. - Extend CI jobs if you add features like WebAssembly targets, feature-flag matrices, or documentation publishing.
With this template, Ultralytics aims to foster a culture of excellence and uniformity in Rust software development, ensuring every project starts on a solid foundation aligned with industry standards and organizational best practices.
Ultralytics thrives on community collaboration, and we deeply value your contributions! Whether it's reporting bugs, suggesting features, or submitting code changes, your involvement is crucial.
- Reporting Issues: Encounter a bug? Please report it on GitHub Issues.
- Feature Requests: Have an idea for improvement? Share it via GitHub Issues.
- Pull Requests: Want to contribute code? Please read our Contributing Guide first, then submit a Pull Request.
- Feedback: Share your thoughts and experiences by participating in our official Survey.
A heartfelt thank you ๐ goes out to all our contributors! Your efforts help make Ultralytics tools better for everyone.
Ultralytics offers two licensing options to accommodate diverse needs:
- AGPL-3.0 License: Ideal for students, researchers, and enthusiasts passionate about open collaboration and knowledge sharing. This OSI-approved open-source license promotes transparency and community involvement. See the LICENSE file for details.
- Enterprise License: Designed for commercial applications, this license permits the seamless integration of Ultralytics software and AI models into commercial products and services, bypassing the copyleft requirements of AGPL-3.0. For commercial use cases, please inquire about an Ultralytics Enterprise License.
For bug reports or feature suggestions related to this template or other Ultralytics projects, please use GitHub Issues. For general questions, discussions, and community support, join our Discord server!








