Struct cargo_toml::Package
source · #[non_exhaustive]pub struct Package<Metadata = Value> {Show 27 fields
pub name: String,
pub edition: Inheritable<Edition>,
pub rust_version: Option<Inheritable<String>>,
pub version: Inheritable<String>,
pub build: Option<OptionalFile>,
pub workspace: Option<String>,
pub authors: Inheritable<Vec<String>>,
pub links: Option<String>,
pub description: Option<Inheritable<String>>,
pub homepage: Option<Inheritable<String>>,
pub documentation: Option<Inheritable<String>>,
pub readme: Inheritable<OptionalFile>,
pub keywords: Inheritable<Vec<String>>,
pub categories: Inheritable<Vec<String>>,
pub exclude: Inheritable<Vec<String>>,
pub include: Inheritable<Vec<String>>,
pub license: Option<Inheritable<String>>,
pub license_file: Option<Inheritable<PathBuf>>,
pub repository: Option<Inheritable<String>>,
pub default_run: Option<String>,
pub autobins: bool,
pub autoexamples: bool,
pub autotests: bool,
pub autobenches: bool,
pub publish: Inheritable<Publish>,
pub resolver: Option<Resolver>,
pub metadata: Option<Metadata>,
}
Expand description
The [package]
section of the Manifest
. This is where crate properties are.
Note that most of these properties can be inherited from a workspace, and therefore not available just from reading a single Cargo.toml
. See Manifest::inherit_workspace
.
You can replace Metadata
generic type with your own
to parse into something more useful than a generic toml Value
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.name: String
Careful: some names are uppercase, case-sensitive. -
changes to _
when used as a Rust identifier.
edition: Inheritable<Edition>
Package’s edition opt-in.
rust_version: Option<Inheritable<String>>
MSRV 1.x (beware: does not require semver formatting)
version: Inheritable<String>
Must parse as semver, e.g. “1.9.0”
build: Option<OptionalFile>
Build script definition
workspace: Option<String>
Workspace this package is a member of (None
if it’s implicit)
e.g. [“Author e@mail”, “etc”] Deprecated.
links: Option<String>
It doesn’t link to anything
description: Option<Inheritable<String>>
A short blurb about the package. This is not rendered in any format when uploaded to crates.io (aka this is not markdown).
homepage: Option<Inheritable<String>>
Project’s homepage
documentation: Option<Inheritable<String>>
Path to your custom docs. Unnecssary if you rely on docs.rs.
readme: Inheritable<OptionalFile>
This points to a file under the package root (relative to this Cargo.toml
).
implied if README.md, README.txt or README exists.
keywords: Inheritable<Vec<String>>
Up to 5, for search
categories: Inheritable<Vec<String>>
This is a list of up to five categories where this crate would fit. e.g. [“command-line-utilities”, “development-tools::cargo-plugins”]
exclude: Inheritable<Vec<String>>
Don’t publish these files
include: Inheritable<Vec<String>>
Publish these files
license: Option<Inheritable<String>>
e.g. “MIT”
license_file: Option<Inheritable<PathBuf>>
If license
is not standard
repository: Option<Inheritable<String>>
(HTTPS) URL to crate’s repository
default_run: Option<String>
The default binary to run by cargo run.
autobins: bool
Discover binaries from the file system
autoexamples: bool
Discover examples from the file system
autotests: bool
Discover tests from the file system
autobenches: bool
Discover benchmarks from the file system
publish: Inheritable<Publish>
Disable publishing or select custom registries.
resolver: Option<Resolver>
“2” is the only useful value
metadata: Option<Metadata>
Arbitrary metadata of any type, an extension point for 3rd party tools.
Implementations§
source§impl<Metadata> Package<Metadata>
impl<Metadata> Package<Metadata>
sourcepub fn new(name: impl Into<String>, version: impl Into<String>) -> Self
pub fn new(name: impl Into<String>, version: impl Into<String>) -> Self
Prefer creating it by parsing a Manifest
instead.
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
sourcepub fn categories(&self) -> &[String]
pub fn categories(&self) -> &[String]
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
sourcepub fn categories_mut(&mut self) -> &mut Vec<String>
pub fn categories_mut(&mut self) -> &mut Vec<String>
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
sourcepub fn description(&self) -> Option<&str>
pub fn description(&self) -> Option<&str>
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
pub fn set_description(&mut self, description: Option<String>)
sourcepub fn documentation(&self) -> Option<&str>
pub fn documentation(&self) -> Option<&str>
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
pub fn set_documentation(&mut self, documentation: Option<String>)
sourcepub fn edition(&self) -> Edition
pub fn edition(&self) -> Edition
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
sourcepub fn exclude(&self) -> &[String]
pub fn exclude(&self) -> &[String]
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
sourcepub fn include(&self) -> &[String]
pub fn include(&self) -> &[String]
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
sourcepub fn homepage(&self) -> Option<&str>
pub fn homepage(&self) -> Option<&str>
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
pub fn set_homepage(&mut self, homepage: Option<String>)
sourcepub fn keywords(&self) -> &[String]
pub fn keywords(&self) -> &[String]
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
sourcepub fn license(&self) -> Option<&str>
pub fn license(&self) -> Option<&str>
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
sourcepub fn license_file(&self) -> Option<&Path>
pub fn license_file(&self) -> Option<&Path>
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
sourcepub fn publish(&self) -> &Publish
pub fn publish(&self) -> &Publish
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
sourcepub fn readme(&self) -> &OptionalFile
pub fn readme(&self) -> &OptionalFile
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
sourcepub fn repository(&self) -> Option<&str>
pub fn repository(&self) -> Option<&str>
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
pub fn set_repository(&mut self, repository: Option<String>)
sourcepub fn rust_version(&self) -> Option<&str>
pub fn rust_version(&self) -> Option<&str>
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
sourcepub fn version(&self) -> &str
pub fn version(&self) -> &str
Panics if the field is not available (inherited from a workspace that hasn’t been loaded)
Trait Implementations§
source§impl<'de, Metadata> Deserialize<'de> for Package<Metadata>where
Metadata: Deserialize<'de>,
impl<'de, Metadata> Deserialize<'de> for Package<Metadata>where
Metadata: Deserialize<'de>,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl<Metadata: PartialEq> PartialEq for Package<Metadata>
impl<Metadata: PartialEq> PartialEq for Package<Metadata>
impl<Metadata: Eq> Eq for Package<Metadata>
impl<Metadata> StructuralPartialEq for Package<Metadata>
Auto Trait Implementations§
impl<Metadata> RefUnwindSafe for Package<Metadata>where
Metadata: RefUnwindSafe,
impl<Metadata> Send for Package<Metadata>where
Metadata: Send,
impl<Metadata> Sync for Package<Metadata>where
Metadata: Sync,
impl<Metadata> Unpin for Package<Metadata>where
Metadata: Unpin,
impl<Metadata> UnwindSafe for Package<Metadata>where
Metadata: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.