pub struct PackageGraph {
pub root_manifest_path: PathBuf,
pub root_dir: PathBuf,
pub is_workspace_root: bool,
pub root_package: Option<usize>,
pub root_settings: RootSettings,
pub primary_packages: Vec<usize>,
pub default_members: Vec<usize>,
pub excluded_members: Vec<PathBuf>,
pub packages: Vec<WorkspacePackage>,
}Expand description
A loaded set of local Cabin packages with their dependency edges resolved against the local filesystem.
Packages appear in topological order: a package’s local dependencies
always appear before the package itself in PackageGraph::packages.
Fields§
§root_manifest_path: PathBufPath to the manifest the user passed (canonicalized to absolute).
root_dir: PathBufDirectory containing the root manifest.
is_workspace_root: boolWhether the root manifest declares a [workspace] table.
root_package: Option<usize>If the root manifest itself is a package (i.e. has a [package]
Table), the index of that package in PackageGraph::packages.
root_settings: RootSettingsRoot-manifest policy settings. For package roots this mirrors the root package’s root-owned fields; for pure workspace roots this is the only place those settings are exposed.
primary_packages: Vec<usize>Indices of packages that count as “primary” — i.e. would be built when no narrower package selection is given.
For a single package this is just the root. For a workspace root it
is every member declared by [workspace.members]. Path dependencies
pulled in transitively are not primary.
default_members: Vec<usize>Indices of packages listed under
[workspace.default-members], validated to be members. Empty
when the workspace declares no defaults — callers fall back to
the documented “all members” behavior. Always a subset of
primary_packages.
excluded_members: Vec<PathBuf>Relative paths under root_dir for any directories
dropped by [workspace.exclude]. Carried through purely for
metadata reporting; the loader has already removed them from
primary_packages.
packages: Vec<WorkspacePackage>All loaded packages, in topological order.
Implementations§
Source§impl PackageGraph
impl PackageGraph
Sourcepub fn package_by_name(&self, name: &str) -> Option<&WorkspacePackage>
pub fn package_by_name(&self, name: &str) -> Option<&WorkspacePackage>
Find a package by name. Linear scan; package counts are small.
Trait Implementations§
Source§impl Clone for PackageGraph
impl Clone for PackageGraph
Source§fn clone(&self) -> PackageGraph
fn clone(&self) -> PackageGraph
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PackageGraph
impl Debug for PackageGraph
Source§impl PartialEq for PackageGraph
impl PartialEq for PackageGraph
Source§fn eq(&self, other: &PackageGraph) -> bool
fn eq(&self, other: &PackageGraph) -> bool
self and other values to be equal, and is used by ==.impl Eq for PackageGraph
impl StructuralPartialEq for PackageGraph
Auto Trait Implementations§
impl Freeze for PackageGraph
impl RefUnwindSafe for PackageGraph
impl Send for PackageGraph
impl Sync for PackageGraph
impl Unpin for PackageGraph
impl UnsafeUnpin for PackageGraph
impl UnwindSafe for PackageGraph
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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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.