Practical Crates
Crate Metadata
Name and Version
A published crate is identified by metadata such as its package name and semantic version.
Program
Play the program to choose the package version and see the label assembled from metadata.
crate_metadata.rs
fn main() {
let version = ;
let package = Package { name: "trace-book", version };
let label = package.label();
println!("{label}");
}
struct Package<'a> {
name: &'a str,
version: &'a str,
}
impl<'a> Package<'a> {
fn label(&self) -> String {
format!("{}@{}", self.name, self.version)
}
}
fn main() {
let version = ;
let package = Package { name: "trace-book", version };
let label = package.label();
println!("{label}");
}
struct Package<'a> {
name: &'a str,
version: &'a str,
}
impl<'a> Package<'a> {
fn label(&self) -> String {
format!("{}@{}", self.name, self.version)
}
}
fn main() {
let version = ;
let package = Package { name: "trace-book", version };
let label = package.label();
println!("{label}");
}
struct Package<'a> {
name: &'a str,
version: &'a str,
}
impl<'a> Package<'a> {
fn label(&self) -> String {
format!("{}@{}", self.name, self.version)
}
}
metadata
Crate metadata gives tools a stable package name and version to display or resolve.
semantic version
Changing `version` models the version string a crate would publish.
method
`label` keeps formatting behavior beside the package data it uses.