Trait WithUserSignals

Source
pub trait WithUserSignals: WithSignals + WithBaseField {
    // Required method
    fn signals(&mut self) -> Self::SignalCollection<'_, Self>;
}
Available on since_api="4.2" only.
Expand description

Implemented for user-defined classes with at least one #[signal] declaration.

Allows to access signals from within the class, as self.signals(). This requires a Base<T> field.

Required Methods§

Source

fn signals(&mut self) -> Self::SignalCollection<'_, Self>

Access user-defined signals of the current object self.

For classes that have at least one #[signal] defined, returns a collection of signal names. Each returned signal has a specialized API for connecting and emitting signals in a type-safe way. If you need to access signals from outside (given a Gd pointer), use Gd::signals() instead.

If you haven’t already, read the book chapter about signals for a walkthrough.

§Provided API

The returned collection provides a method for each signal, with the same name as the corresponding #[signal].
For example, if you have…

#[signal]
fn damage_taken(&mut self, amount: i32);

…then you can access the signal as self.signals().damage_taken(), which returns an object with the following API:

// Connects global or associated function, or a closure.
fn connect(f: impl FnMut(i32));

// Connects a &mut self method or closure on the emitter object.
fn connect_self(f: impl FnMut(&mut Self, i32));

// Connects a &mut self method or closure on another object.
fn connect_other<C>(f: impl FnMut(&mut C, i32));

// Emits the signal with the given arguments.
fn emit(amount: i32);

See TypedSignal for more information.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§