godot

Module meta

Expand description

Meta-information about Godot types, their properties and conversions between them.

§Conversions between types

§Godot representation

The library provides two traits FromGodot and ToGodot, which are used at the Rust <-> Godot boundary, both in user-defined functions (#[func]) and engine APIs (godot::classes module). Their to_godot() and from_godot() methods convert types from/to their closest possible Godot type (e.g. GString instead of Rust String). You usually don’t need to call these methods yourself, they are automatically invoked when passing objects to/from Godot.

Most often, the two traits appear in pairs, however there are cases where only one of the two is implemented. For example, &str implements ToGodot but not FromGodot. Additionally, GodotConvert acts as a supertrait of both FromGodot and ToGodot. Its sole purpose is to define the “closest possible Godot type” GodotConvert::Via.

For fallible conversions, you can use FromGodot::try_from_godot().

§Variants

ToGodot and FromGodot also implement a conversion to/from Variant, which is the most versatile Godot type. This conversion is available via to_variant() and from_variant() methods. These methods are also available directly on Variant itself, via to(), try_to() and from() functions.

§Class conversions

Godot classes exist in a hierarchy. In OOP, it is usually possible to represent pointers to derived objects as pointer to their bases. For conversions between base and derived class objects, you can use Gd methods cast(), try_cast() and upcast(). Upcasts are infallible.

§Argument conversions

Rust does not support implicit conversions, however it has something very close: the impl Into<T> idiom, which can be used to convert “T-compatible” arguments into T. This library specializes this idea with two traits:

  • AsArg<T> allows argument conversions from arguments into T. This is most interesting in the context of strings (so you can pass &str to a function expecting GString), but is generic to support e.g. array insertion.
  • AsObjectArg<T> is a more specialized version of AsArg that is used for object arguments, i.e. Gd<T>.

Modules§

  • Errors in the gdext library.

Structs§

  • Name of a class registered with Godot.
  • Describes a method in Godot.
  • Info needed by Godot, for how to export a type to the editor.
  • Describes a property in Godot.
  • Simple reference wrapper, used when passing arguments by-ref to Godot APIs.

Traits§

  • Marker trait to identify types that can be stored in Array<T>.
  • Implicit conversions for arguments passed to Godot APIs.
  • Objects that can be passed as arguments to Godot engine functions.
  • Defines the canonical conversion from Godot for a type.
  • Indicates that a type can be passed to/from Godot, either directly or through an intermediate “via” type.
  • Type that is directly representable in the engine.
  • Marker trait to identify types that can be stored in Packed*Array types.
  • Implemented for all parameter types T that are allowed to receive impl AsArg<T>.
  • Defines the canonical conversion to Godot for a type.