Sha256: b1d1740d65ad0b9f296342afbac0c6994eb2fa0ea7dba4882b64b246e309d9da
Contents?: true
Size: 786 Bytes
Versions: 19
Compression:
Stored size: 786 Bytes
Contents
use super::*; use std::marker::PhantomData; /// `Weak` holds a non-owning reference to an object. #[derive(Clone, PartialEq, Eq, Default)] pub struct Weak<I: ComInterface>(Option<crate::imp::IWeakReference>, PhantomData<I>); impl<I: ComInterface> Weak<I> { /// Creates a new `Weak` object without any backing object. pub fn new() -> Self { Self(None, PhantomData) } /// Attempts to upgrade the weak reference to a strong reference. pub fn upgrade(&self) -> Option<I> { self.0.as_ref().and_then(|inner| unsafe { inner.Resolve().ok() }) } pub(crate) fn downgrade(source: &crate::imp::IWeakReferenceSource) -> Result<Self> { let reference = unsafe { source.GetWeakReference().ok() }; Ok(Self(reference, PhantomData)) } }
Version data entries
19 entries across 19 versions & 1 rubygems