aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/handle.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/package/handle.rs')
-rw-r--r--crates/shirabe/src/package/handle.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/crates/shirabe/src/package/handle.rs b/crates/shirabe/src/package/handle.rs
index aed8be0f..45d46f49 100644
--- a/crates/shirabe/src/package/handle.rs
+++ b/crates/shirabe/src/package/handle.rs
@@ -76,6 +76,26 @@ impl AnyPackage {
}
}
+ /// For `AliasPackage`'s own methods, which `PackageInterface` does not carry and the
+ /// alias subclasses inherit rather than redeclare.
+ pub fn as_alias_package(&self) -> Option<&AliasPackage> {
+ match self {
+ Self::AliasPackage(p) => Some(p),
+ Self::CompleteAliasPackage(p) => Some(&p.inner),
+ Self::RootAliasPackage(p) => Some(&p.inner.inner),
+ _ => None,
+ }
+ }
+
+ pub fn as_alias_package_mut(&mut self) -> Option<&mut AliasPackage> {
+ match self {
+ Self::AliasPackage(p) => Some(p),
+ Self::CompleteAliasPackage(p) => Some(&mut p.inner),
+ Self::RootAliasPackage(p) => Some(&mut p.inner.inner),
+ _ => None,
+ }
+ }
+
pub fn as_root_package_interface(&self) -> Option<&dyn RootPackageInterface> {
match self {
Self::RootPackage(p) => Some(p),