pub trait CppSubclassSelfOwned<CppPeer: CppSubclassCppPeer>: CppSubclass<CppPeer> {
    // Provided methods
    fn new_self_owned(me: Self) -> Rc<RefCell<Self>> { ... }
    fn delete_self(&self) { ... }
}
Expand description

Trait to be implemented by subclasses which are self-owned, i.e. not owned externally by either Rust or C++ code, and thus need the ability to delete themselves when some virtual function is called.

Provided Methods§

source

fn new_self_owned(me: Self) -> Rc<RefCell<Self>>

Creates a new instance of this subclass which owns itself. This is useful for observers (etc.) which self-register to listen to events. If an event occurs which would cause this to want to unregister, use CppSubclassSelfOwned::delete_self. The return value may be useful to register this, etc. but can ultimately be discarded without destroying this object.

source

fn delete_self(&self)

Relinquishes ownership from the C++ side. If there are no outstanding references from the Rust side, this will result in the destruction of this subclass instance.

Implementors§