Struct objc2::runtime::Sel

source ·
#[repr(transparent)]
pub struct Sel { /* private fields */ }
Expand description

A method selector.

The Rust equivalent of Objective-C’s SEL type. You can easily create this using the sel! macro.

The main reason the Objective-C runtime uses a custom types for selectors is to support efficient comparison - a selector is effectively just an interned string, so this makes that very easy!

This guarantees the null-pointer optimization, namely that Option<Sel> is the same size as Sel.

Implementations§

source§

impl Sel

source

pub const fn as_ptr(&self) -> *const objc_selector

Get a pointer to the raw selector.

Useful when working with raw FFI methods.

source

pub fn register(name: &str) -> Self

Registers a selector with the Objective-C runtime.

This is the dynamic version of the sel! macro, prefer to use that when your selector is static.

Panics

Panics if name contains an internal NUL byte, or if the runtime failed allocating space for the selector.

source

pub fn name(&self) -> &str

Returns the string representation of the selector.

Panics

Panics if the selector is not valid UTF-8 (however unlikely!)

Trait Implementations§

source§

impl Clone for Sel

source§

fn clone(&self) -> Sel

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 Sel

source§

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

Formats the value using the given formatter. Read more
source§

impl Encode for Sel

source§

const ENCODING: Encoding = Encoding::Sel

The Objective-C type-encoding for this type.
source§

impl Hash for Sel

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq<Sel> for Sel

source§

fn eq(&self, other: &Sel) -> 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 Pointer for Sel

source§

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

Formats the value using the given formatter.
source§

impl Copy for Sel

source§

impl Eq for Sel

source§

impl RefUnwindSafe for Sel

source§

impl Send for Sel

source§

impl StructuralEq for Sel

source§

impl StructuralPartialEq for Sel

source§

impl Sync for Sel

source§

impl UnwindSafe for Sel

Auto Trait Implementations§

§

impl Unpin for Sel

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> EncodeConvert for Twhere T: Encode,

§

type __Inner = T

source§

const __ENCODING: Encoding = Self::ENCODING

source§

fn __from_inner(inner: <T as EncodeConvert>::__Inner) -> T

source§

fn __into_inner(self) -> <T as EncodeConvert>::__Inner

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> InnerIvarType for Twhere T: EncodeConvert,

source§

const __ENCODING: Encoding = const __ENCODING: Encoding = <Self as EncodeConvert>::__ENCODING;

§

type __Inner = T

§

type Output = T

The type that an Ivar containing this will dereference to. Read more
source§

const __MAY_DROP: bool = false

source§

unsafe fn __to_ref( inner: &<T as InnerIvarType>::__Inner ) -> &<T as InnerIvarType>::Output

source§

unsafe fn __to_mut( inner: &mut <T as InnerIvarType>::__Inner ) -> &mut <T as InnerIvarType>::Output

source§

fn __to_ptr( inner: NonNull<<T as InnerIvarType>::__Inner> ) -> NonNull<<T as InnerIvarType>::Output>

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.
source§

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