| Crates.io | lmrc-toml-writer |
| lib.rs | lmrc-toml-writer |
| version | 0.3.16 |
| created_at | 2025-11-26 20:50:40.50331+00 |
| updated_at | 2025-12-11 13:25:52.144603+00 |
| description | Type-safe TOML generation for Cargo.toml files |
| homepage | |
| repository | https://gitlab.com/lemarco/lmrc-stack |
| max_upload_size | |
| id | 1952247 |
| size | 38,349 |
Type-safe TOML generation for Cargo.toml files.
This library provides builder APIs for generating valid Cargo.toml files programmatically, avoiding error-prone string concatenation. It supports both workspace and package manifests with full type safety.
workspace = true syntax[dependencies]
lmrc-toml-writer = "0.1.0"
use lmrc_toml_writer::WorkspaceToml;
let toml = WorkspaceToml::new()
.resolver("2")
.members(vec!["apps/api", "apps/web", "infra/pipeline"])
.workspace_version("0.1.0")
.workspace_edition("2021")
.workspace_authors(vec!["Team Name"])
.workspace_license("MIT OR Apache-2.0")
.workspace_repository("https://github.com/example/repo")
.dependency("tokio", r#"{ version = "1.0", features = ["full"] }"#)
.dependency("serde", r#"{ version = "1.0", features = ["derive"] }"#)
.dependency("thiserror", "2.0")
.build();
println!("{}", toml);
Output:
[workspace]
resolver = "2"
members = [
"apps/api",
"apps/web",
"infra/pipeline",
]
[workspace.package]
version = "0.1.0"
edition = "2021"
authors = ["Team Name"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/example/repo"
[workspace.dependencies]
tokio = { version = "1.0", features = ["full"] }
serde = { version = "1.0", features = ["derive"] }
thiserror = "2.0"
use lmrc_toml_writer::PackageToml;
let toml = PackageToml::new("my-app")
.workspace_version()
.workspace_edition()
.workspace_authors()
.workspace_license()
.description("My awesome application")
.keywords(vec!["cli", "tool"])
.bin("my-app", "src/main.rs")
.workspace_dependency("tokio")
.workspace_dependency("serde")
.dependency("clap", r#"{ version = "4.5", features = ["derive"] }"#)
.dependency("reqwest", "0.11")
.build();
println!("{}", toml);
Output:
[package]
name = "my-app"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
description = "My awesome application"
keywords = ["cli", "tool"]
[[bin]]
name = "my-app"
path = "src/main.rs"
[dependencies]
tokio = { workspace = true }
serde = { workspace = true }
clap = { version = "4.5", features = ["derive"] }
reqwest = "0.11"
Builder for workspace manifest files.
Methods:
resolver(version) - Set resolver versionmembers(vec) / member(path) - Add workspace membersexclude(vec) - Exclude paths from workspaceworkspace_version(version) - Set workspace versionworkspace_edition(edition) - Set workspace editionworkspace_authors(vec) / workspace_author(author) - Set authorsworkspace_license(license) - Set licenseworkspace_repository(url) - Set repository URLdependency(name, spec) - Add workspace dependencydependencies(iter) - Add multiple dependenciesbuild() - Generate TOML stringBuilder for package manifest files.
Methods:
version(version) / workspace_version() - Set or inherit versionedition(edition) / workspace_edition() - Set or inherit editionauthors(vec) / workspace_authors() - Set or inherit authorslicense(license) / workspace_license() - Set or inherit licenserepository(url) / workspace_repository() - Set or inherit repositorydescription(desc) - Set descriptionkeywords(vec) / keyword(kw) - Add keywordscategories(vec) / category(cat) - Add categoriesbin(name, path) - Add binary targetdependency(name, version) - Add regular dependencydependency_inline(name, spec) - Add dependency with inline tableworkspace_dependency(name) - Add workspace dependencyworkspace_dependency_with_version(name, version) - Add workspace dependency with version overridedev_dependency(name, version) - Add dev dependencybuild() - Generate TOML stringThis library is particularly useful for:
MIT OR Apache-2.0