Trait objc2_foundation::NSCopying
source · [−]pub unsafe trait NSCopying: Message {
type Ownership: Ownership;
type Output: Message;
fn copy(&self) -> Id<Self::Output, Self::Ownership> { ... }
}
Required Associated Types
Indicates whether the type is mutable or immutable.
This can be Owned
if and only if copy
creates a new instance,
see the following example:
ⓘ
let x: Id<MyObject, _> = MyObject::new();
// This is valid only if `y` is a new instance. Otherwise `x` and `y`
// would be able to create aliasing mutable references!
let y: Id<MyObject, Owned> = x.copy();
Note that for the same reason, you should be careful when defining
new
methods on your object; e.g. immutable types like NSString
don’t return Id<NSString, Owned>
, because that would allow this
trait to create an aliasing Id<NSString, Shared>
(since sending the
copy
message (and others) does not create a new instance, but
instead just retains the instance).