diff options
Diffstat (limited to 'crates/shirabe/src/package/handle.rs')
| -rw-r--r-- | crates/shirabe/src/package/handle.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/crates/shirabe/src/package/handle.rs b/crates/shirabe/src/package/handle.rs index 2e723b3..5df4fc0 100644 --- a/crates/shirabe/src/package/handle.rs +++ b/crates/shirabe/src/package/handle.rs @@ -1359,6 +1359,20 @@ macro_rules! impl_handle_downcasts { impl_handle_downcasts!(PackageInterfaceHandle); +impl PackageInterfaceHandle { + pub fn equals(&self, package: &PackageInterfaceHandle) -> bool { + let self_real = match self.as_alias() { + Some(alias) => PackageInterfaceHandle::from(alias.get_alias_of()), + None => self.clone(), + }; + let other_real = match package.as_alias() { + Some(alias) => PackageInterfaceHandle::from(alias.get_alias_of()), + None => package.clone(), + }; + self_real.ptr_eq(&other_real) + } +} + impl PackageHandle { pub fn from_package(package: Package) -> Self { Self(Rc::new(RefCell::new(AnyPackage::Package(package)))) |
