Base

Struct Base 

pub struct Base<T>
where T: GodotClass,
{ /* private fields */ }
Expand description

Restricted version of Gd, to hold the base instance inside a user’s GodotClass.

Behaves similarly to Gd, but is more constrained. Cannot be constructed by the user.

Implementations§

§

impl<T> Base<T>
where T: GodotClass,

pub fn to_init_gd(&self) -> Gd<T>

Returns a Gd referencing the base object, for exclusive use during object initialization and NOTIFICATION_POSTINITIALIZE.

Can be used during an initialization function I*::init() or Gd::from_init_fn(), or POSTINITIALIZE.

The base pointer is only pointing to a base object; you cannot yet downcast it to the object being constructed. The instance ID is the same as the one the in-construction object will have.

§Lifecycle for ref-counted classes

If T: Inherits<RefCounted>, then the ref-counted object is not yet fully-initialized at the time of the init function and POSTINITIALIZE running. Accessing the base object without further measures would be dangerous. Here, godot-rust employs a workaround: the Base object (which holds a weak pointer to the actual instance) is temporarily upgraded to a strong pointer, preventing use-after-free.

This additional reference is automatically dropped at an implementation-defined point in time (which may change, and technically delay destruction of your object as soon as you use Base::to_init_gd()). Right now, this refcount-decrement is deferred to the next frame.

For now, ref-counted bases can only use to_init_gd() on the main thread.

§Panics (Debug)

If called outside an initialization function, or for ref-counted objects on a non-main thread.

Trait Implementations§

§

impl<T> Debug for Base<T>
where T: GodotClass,

§

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

Formats the value using the given formatter. Read more
§

impl<T> Display for Base<T>
where T: GodotClass,

§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Base<T>

§

impl<T> !RefUnwindSafe for Base<T>

§

impl<T> !Send for Base<T>

§

impl<T> !Sync for Base<T>

§

impl<T> Unpin for Base<T>

§

impl<T> !UnwindSafe for Base<T>

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
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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
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.
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.