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.rs14
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))))