pub struct CFType(/* private fields */);
Expand description

Superclass of all Core Foundation objects.

Implementations§

source§

impl CFType

source

pub fn downcast<T: ConcreteCFType>(&self) -> Option<T>

Try to downcast the CFType to a subclass. Checking if the instance is the correct subclass happens at runtime and None is returned if it is not the correct type. Works similar to Box::downcast and CFPropertyList::downcast.

Examples
// Create a string.
let string: CFString = CFString::from_static_string("FooBar");
// Cast it up to a CFType.
let cf_type: CFType = string.as_CFType();
// Cast it down again.
assert_eq!(cf_type.downcast::<CFString>().unwrap().to_string(), "FooBar");
// Casting it to some other type will yield `None`
assert!(cf_type.downcast::<CFBoolean>().is_none());
let boolean_array = CFArray::from_CFTypes(&[CFBoolean::true_value()]).into_CFType();

// This downcast is not allowed and causes compiler error, since it would cause undefined
// behavior to access the elements of the array as a CFString:
let invalid_string_array = boolean_array
    .downcast_into::<CFArray<CFString>>()
    .unwrap();
source

pub fn downcast_into<T: ConcreteCFType>(self) -> Option<T>

Similar to downcast, but consumes self and can thus avoid touching the retain count.

Trait Implementations§

source§

impl Clone for CFType

source§

fn clone(&self) -> CFType

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CFType

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using CFCopyDescription.

source§

impl Drop for CFType

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl PartialEq for CFType

source§

fn eq(&self, other: &CFType) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl TCFType for CFType

§

type Ref = *const c_void

The reference type wrapped inside this type.
source§

fn as_concrete_TypeRef(&self) -> CFTypeRef

Returns the object as its concrete TypeRef.
source§

unsafe fn wrap_under_get_rule(reference: CFTypeRef) -> CFType

Returns an instance of the object, wrapping the underlying CFTypeRef subclass. Use this when following Core Foundation’s “Get Rule”. The reference count is bumped.
source§

fn as_CFTypeRef(&self) -> CFTypeRef

Returns the object as a raw CFTypeRef. The reference count is not adjusted.
source§

unsafe fn wrap_under_create_rule(obj: CFTypeRef) -> CFType

Returns an instance of the object, wrapping the underlying CFTypeRef subclass. Use this when following Core Foundation’s “Create Rule”. The reference count is not bumped.
source§

fn type_id() -> CFTypeID

Returns the type ID for this class.
source§

fn as_CFType(&self) -> CFType

Returns the object as a wrapped CFType. The reference count is incremented by one.
source§

fn into_CFType(self) -> CFTypewhere Self: Sized,

Returns the object as a wrapped CFType. Consumes self and avoids changing the reference count.
source§

fn retain_count(&self) -> CFIndex

Returns the reference count of the object. It is unwise to do anything other than test whether the return value of this method is greater than zero.
source§

fn type_of(&self) -> CFTypeID

Returns the type ID of this object.
source§

fn show(&self)

Writes a debugging version of this object on standard error.
source§

fn instance_of<OtherCFType: TCFType>(&self) -> bool

Returns true if this value is an instance of another type.
source§

impl<'a> ToVoid<CFType> for &'a CFType

source§

impl ToVoid<CFType> for CFTypeRef

source§

impl ToVoid<CFType> for CFType

Auto Trait Implementations§

§

impl RefUnwindSafe for CFType

§

impl !Send for CFType

§

impl !Sync for CFType

§

impl Unpin for CFType

§

impl UnwindSafe for CFType

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromMutVoid for Twhere T: TCFType,

source§

unsafe fn from_mut_void<'a>(x: *mut c_void) -> ItemMutRef<'a, T>

source§

impl<T> FromVoid for Twhere T: TCFType,

source§

unsafe fn from_void<'a>(x: *const c_void) -> ItemRef<'a, T>

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.