#[repr(transparent)]pub struct Closure { /* private fields */ }
Implementations
Creates a new closure around a Rust closure.
Note that RustClosure
provides more convenient and non-unsafe API for invoking
closures. This type mostly exists for FFI interop.
Panics
Invoking the closure with wrong argument types or returning the wrong return value type will panic.
Example
use glib::prelude::*;
let closure = glib::Closure::new(|values| {
let x = values[0].get::<i32>().unwrap();
Some((x + 1).to_value())
});
// Invoking non-Rust closures is unsafe because of possibly missing
// argument and return value type checks.
let res = unsafe {
closure
.invoke_with_values(glib::Type::I32, &[1i32.to_value()])
.and_then(|v| v.get::<i32>().ok())
.expect("Invalid return value")
};
assert_eq!(res, 2);
Creates a new closure around a Rust closure.
Note that RustClosure
provides more convenient and non-unsafe API for invoking
closures. This type mostly exists for FFI interop.
Panics
Invoking the closure with wrong argument types or returning the wrong return value type will panic.
Invoking the closure from a different thread than this one will panic.
Creates a new closure around a Rust closure.
Safety
The captured variables of the closure must stay valid as long as the return value of this constructor does, and it must be valid to call the closure from any thread that is used by callers.
Invokes the closure with the given arguments.
For invalidated closures this returns the “default” value of the return type.
Safety
The argument types and return value type must match the ones expected by the closure or otherwise the behaviour is undefined.
Closures created from Rust via e.g. Closure::new
will panic on type mismatches but
this is not guaranteed for closures created from other languages.
Invalidates the closure.
Invoking an invalidated closure has no effect.
Trait Implementations
Performs the conversion.
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
Returns the type identifier of Self
.
Auto Trait Implementations
Blanket Implementations
Mutably borrows from an owned value. Read more
Returns a SendValue
clone of self
.