Struct MainContext

pub struct MainContext { /* private fields */ }
Expand description

GLib type: Shared boxed type with reference counted clone semantics.

Implementations§

§

impl MainContext

pub fn as_ptr(&self) -> *mut GMainContext

Return the inner pointer to the underlying C value.

pub unsafe fn from_glib_ptr_borrow(ptr: &*mut GMainContext) -> &MainContext

Borrows the underlying C value.

§

impl MainContext

pub fn new() -> MainContext

pub fn with_flags(flags: MainContextFlags) -> MainContext

pub fn dispatch(&self)

pub fn is_owner(&self) -> bool

pub fn iteration(&self, may_block: bool) -> bool

pub fn pending(&self) -> bool

pub fn wakeup(&self)

pub fn default() -> MainContext

pub fn thread_default() -> Option<MainContext>

pub fn ref_thread_default() -> MainContext

§

impl MainContext

pub fn prepare(&self) -> (bool, i32)

pub fn find_source_by_id(&self, source_id: &SourceId) -> Option<Source>

pub fn invoke<F>(&self, func: F)
where F: FnOnce() + Send + 'static,

Invokes func on the main context.

If the current thread is the owner of the main context or the main context currently has no owner then func will be called directly from inside this function. If this behaviour is not desired and func should always be called asynchronously then use MainContext::spawn glib::idle_add instead.

pub fn invoke_with_priority<F>(&self, priority: Priority, func: F)
where F: FnOnce() + Send + 'static,

Invokes func on the main context with the given priority.

If the current thread is the owner of the main context or the main context currently has no owner then func will be called directly from inside this function. If this behaviour is not desired and func should always be called asynchronously then use MainContext::spawn glib::idle_add instead.

pub fn invoke_local<F>(&self, func: F)
where F: FnOnce() + 'static,

Invokes func on the main context.

Different to invoke(), this does not require func to be Send but can only be called from the thread that owns the main context.

This function panics if called from a different thread than the one that owns the main context.

Note that this effectively means that func is called directly from inside this function or otherwise panics immediately. If this behaviour is not desired and func should always be called asynchronously then use MainContext::spawn_local glib::idle_add_local instead.

pub fn invoke_local_with_priority<F>(&self, _priority: Priority, func: F)
where F: FnOnce() + 'static,

Invokes func on the main context with the given priority.

Different to invoke_with_priority(), this does not require func to be Send but can only be called from the thread that owns the main context.

This function panics if called from a different thread than the one that owns the main context.

Note that this effectively means that func is called directly from inside this function or otherwise panics immediately. If this behaviour is not desired and func should always be called asynchronously then use MainContext::spawn_local glib::idle_add_local instead.

pub fn with_thread_default<R, F>(&self, func: F) -> Result<R, BoolError>
where F: FnOnce() -> R,

Call closure with the main context configured as the thread default one.

The thread default main context is changed in a panic-safe manner before calling func and released again afterwards regardless of whether closure panicked or not.

This will fail if the main context is owned already by another thread.

pub fn acquire(&self) -> Result<MainContextAcquireGuard<'_>, BoolError>

Acquire ownership of the main context.

Ownership will automatically be released again once the returned acquire guard is dropped.

This will fail if the main context is owned already by another thread.

§

impl MainContext

pub fn spawn<R, F>(&self, f: F) -> JoinHandle<R>
where R: Send + 'static, F: Future<Output = R> + Send + 'static,

Spawn a new infallible Future on the main context.

This can be called from any thread and will execute the future from the thread where main context is running, e.g. via a MainLoop.

pub fn spawn_local<R, F>(&self, f: F) -> JoinHandle<R>
where R: 'static, F: Future<Output = R> + 'static,

Spawn a new infallible Future on the main context.

The given Future does not have to be Send.

This can be called only from the thread where the main context is running, e.g. from any other Future that is executed on this main context, or after calling with_thread_default or acquire on the main context.

pub fn spawn_with_priority<R, F>( &self, priority: Priority, f: F, ) -> JoinHandle<R>
where R: Send + 'static, F: Future<Output = R> + Send + 'static,

Spawn a new infallible Future on the main context, with a non-default priority.

This can be called from any thread and will execute the future from the thread where main context is running, e.g. via a MainLoop.

pub fn spawn_local_with_priority<R, F>( &self, priority: Priority, f: F, ) -> JoinHandle<R>
where R: 'static, F: Future<Output = R> + 'static,

Spawn a new infallible Future on the main context, with a non-default priority.

The given Future does not have to be Send.

This can be called only from the thread where the main context is running, e.g. from any other Future that is executed on this main context, or after calling with_thread_default or acquire on the main context.

pub fn spawn_from_within<R, F>( &self, func: impl FnOnce() -> F + Send + 'static, ) -> SpawnWithinJoinHandle<R>
where R: Send + 'static, F: Future<Output = R> + 'static,

Spawn a new infallible Future on the main context from inside the main context.

The given Future does not have to be Send but the closure to spawn it has to be.

This can be called only from any thread.

pub fn spawn_from_within_with_priority<R, F>( &self, priority: Priority, func: impl FnOnce() -> F + Send + 'static, ) -> SpawnWithinJoinHandle<R>
where R: Send + 'static, F: Future<Output = R> + 'static,

Spawn a new infallible Future on the main context from inside the main context.

The given Future does not have to be Send but the closure to spawn it has to be.

This can be called only from any thread.

pub fn block_on<F>(&self, f: F) -> <F as Future>::Output
where F: Future,

Runs a new, infallible Future on the main context and block until it finished, returning the result of the Future.

The given Future does not have to be Send or 'static.

This must only be called if no MainLoop or anything else is running on this specific main context.

Trait Implementations§

§

impl Clone for MainContext

§

fn clone(&self) -> MainContext

Makes a clone of this shared reference.

This increments the strong reference count of the reference. Dropping the reference will decrement it again.

1.0.0 · Source§

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

Performs copy-assignment from source. Read more
§

impl Debug for MainContext

§

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

Formats the value using the given formatter. Read more
§

impl Default for MainContext

§

fn default() -> MainContext

Returns the “default value” for a type. Read more
§

impl From<MainContext> for Value

§

fn from(s: MainContext) -> Value

Converts to this type from the input type.
§

impl HasParamSpec for MainContext

§

type ParamSpec = ParamSpecBoxed

§

type SetValue = MainContext

Preferred value to be used as setter for the associated ParamSpec.
§

type BuilderFn = fn(&str) -> ParamSpecBoxedBuilder<'_, MainContext>

§

fn param_spec_builder() -> <MainContext as HasParamSpec>::BuilderFn

§

impl Hash for MainContext

§

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

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
§

impl LocalSpawn for MainContext

§

fn spawn_local_obj( &self, f: LocalFutureObj<'static, ()>, ) -> Result<(), SpawnError>

Spawns a future that will be run to completion. Read more
§

fn status_local(&self) -> Result<(), SpawnError>

Determines whether the executor is able to spawn new tasks. Read more
§

impl Ord for MainContext

§

fn cmp(&self, other: &MainContext) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
§

impl PartialEq for MainContext

§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

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

impl PartialOrd for MainContext

§

fn partial_cmp(&self, other: &MainContext) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
§

impl Spawn for MainContext

§

fn spawn_obj(&self, f: FutureObj<'static, ()>) -> Result<(), SpawnError>

Spawns a future that will be run to completion. Read more
§

fn status(&self) -> Result<(), SpawnError>

Determines whether the executor is able to spawn new tasks. Read more
§

impl StaticType for MainContext

§

fn static_type() -> Type

Returns the type identifier of Self.
§

impl Eq for MainContext

§

impl Send for MainContext

§

impl StructuralPartialEq for MainContext

§

impl Sync for MainContext

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<C> AsyncPosition<()> for C

§

fn position(_index: usize)

Returns the position. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where 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.

§

impl<T> IntoClosureReturnValue for T
where T: Into<Value>,

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<Sp> LocalSpawnExt for Sp
where Sp: LocalSpawn + ?Sized,

§

fn spawn_local<Fut>(&self, future: Fut) -> Result<(), SpawnError>
where Fut: Future<Output = ()> + 'static,

Spawns a task that polls the given future with output () to completion. Read more
§

fn spawn_local_with_handle<Fut>( &self, future: Fut, ) -> Result<RemoteHandle<<Fut as Future>::Output>, SpawnError>
where Fut: Future + 'static,

Spawns a task that polls the given future to completion and returns a future that resolves to the spawned future’s output. Read more
§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<C, I> Position<(), I> for C

§

fn position(&self, _index: &I)

Returns the position. Read more
§

impl<T> Property for T
where T: HasParamSpec,

§

type Value = T

§

impl<T> PropertyGet for T
where T: HasParamSpec,

§

type Value = T

§

fn get<R, F>(&self, f: F) -> R
where F: Fn(&<T as PropertyGet>::Value) -> R,

§

impl<Sp> SpawnExt for Sp
where Sp: Spawn + ?Sized,

§

fn spawn<Fut>(&self, future: Fut) -> Result<(), SpawnError>
where Fut: Future<Output = ()> + Send + 'static,

Spawns a task that polls the given future with output () to completion. Read more
§

fn spawn_with_handle<Fut>( &self, future: Fut, ) -> Result<RemoteHandle<<Fut as Future>::Output>, SpawnError>
where Fut: Future + Send + 'static, <Fut as Future>::Output: Send,

Spawns a task that polls the given future to completion and returns a future that resolves to the spawned future’s output. Read more
§

impl<T> StaticTypeExt for T
where T: StaticType,

§

fn ensure_type()

Ensures that the type has been registered with the type system.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

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
§

impl<T> ToSendValue for T
where T: Send + ToValue + ?Sized,

§

fn to_send_value(&self) -> SendValue

Returns a SendValue clone of self.
§

impl<T> TransparentType for T

Source§

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

Source§

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

impl<T> TryFromClosureReturnValue for T
where T: for<'a> FromValue<'a> + StaticType + 'static,

Source§

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

Source§

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<'a, T, C, E> FromValueOptional<'a> for T
where T: FromValue<'a, Checker = C>, C: ValueTypeChecker<Error = ValueTypeMismatchOrNoneError<E>>, E: Error + Send + 'static,