[][src]Trait gdnative::prelude::ToVariant

pub trait ToVariant {
    fn to_variant(&self) -> Variant;
}

Types that can be converted to a Variant.

Wrappers and collections

Implementations are provided for a few common Rust wrappers and collections:

  • Option<T> is unwrapped to inner value, or Nil if None
  • Result<T, E> is represented as an externally tagged Dictionary (see below).
  • PhantomData<T> is represented as Nil.
  • &[T] and Vec<T> are represented as VariantArrays. FromVariant is only implemented for Vec<T>.

Deriving ToVariant

The derive macro does the following mapping between Rust structures and Godot types:

  • Newtype(inner) is unwrapped to inner
  • Tuple(a, b, c) is represented as a VariantArray ([a, b, c])
  • Struct { a, b, c } is represented as a Dictionary ({ "a": a, "b": b, "c": c })
  • Unit is represented as an empty Dictionary ({})
  • Enum::Variant(a, b, c) is represented as an externally tagged Dictionary ({ "Variant": [a, b, c] })

Behavior of the derive macros can be customized using attributes:

Field attributes

  • #[variant(to_variant_with = "path::to::func")]

Use the given function to convert the field to Variant. The function's signature is expected to be fn(&T) -> Variant, although it can be generic over T.

  • #[variant(from_variant_with = "path::to::func")]

Use the given function to convert from a Variant. The function's signature is expected to be fn(&Variant) -> Result<T, FromVariantError>, although it can be generic over T.

  • #[variant(with = "path::to::mod")]

Convenience attribute that sets to_variant_with to path::to::mod::to_variant and from_variant_with to path::to::mod::from_variant.

  • #[variant(skip_to_variant)]

Skip the field when converting to Variant.

  • #[variant(skip_from_variant)]

Skip the field when converting from Variant. A default vale will be obtained using Default::default().

  • #[variant(skip)]

Convenience attribute that sets skip_to_variant and skip_from_variant.

Required methods

fn to_variant(&self) -> Variant

Loading content...

Implementations on Foreign Types

impl ToVariant for i64[src]

impl ToVariant for Rotation3D<f32, UnknownUnit, UnknownUnit>[src]

impl ToVariant for i16[src]

impl ToVariant for ()[src]

impl ToVariant for i8[src]

impl<T10, T11, T12> ToVariant for (T10, T11, T12) where
    T10: ToVariant,
    T11: ToVariant,
    T12: ToVariant
[src]

impl ToVariant for u8[src]

impl<T, E> ToVariant for Result<T, E> where
    E: ToVariant,
    T: ToVariant
[src]

impl ToVariant for f64[src]

impl<'a, T> ToVariant for &'a mut T where
    T: ToVariant + ?Sized
[src]

impl ToVariant for Vector3D<f32, UnknownUnit>[src]

impl ToVariant for String[src]

impl<T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> ToVariant for (T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) where
    T10: ToVariant,
    T11: ToVariant,
    T12: ToVariant,
    T3: ToVariant,
    T4: ToVariant,
    T5: ToVariant,
    T6: ToVariant,
    T7: ToVariant,
    T8: ToVariant,
    T9: ToVariant
[src]

impl<T> ToVariant for PhantomData<T>[src]

impl ToVariant for Transform2D<f32, UnknownUnit, UnknownUnit>[src]

impl<'_, T> ToVariant for &'_ [T] where
    T: ToVariant
[src]

impl ToVariant for isize[src]

impl<T7, T8, T9, T10, T11, T12> ToVariant for (T7, T8, T9, T10, T11, T12) where
    T10: ToVariant,
    T11: ToVariant,
    T12: ToVariant,
    T7: ToVariant,
    T8: ToVariant,
    T9: ToVariant
[src]

impl<T8, T9, T10, T11, T12> ToVariant for (T8, T9, T10, T11, T12) where
    T10: ToVariant,
    T11: ToVariant,
    T12: ToVariant,
    T8: ToVariant,
    T9: ToVariant
[src]

impl ToVariant for str[src]

impl ToVariant for usize[src]

impl ToVariant for Vector2D<f32, UnknownUnit>[src]

impl ToVariant for Rect<f32, UnknownUnit>[src]

impl ToVariant for u64[src]

impl<T4, T5, T6, T7, T8, T9, T10, T11, T12> ToVariant for (T4, T5, T6, T7, T8, T9, T10, T11, T12) where
    T10: ToVariant,
    T11: ToVariant,
    T12: ToVariant,
    T4: ToVariant,
    T5: ToVariant,
    T6: ToVariant,
    T7: ToVariant,
    T8: ToVariant,
    T9: ToVariant
[src]

impl<T> ToVariant for Option<T> where
    T: ToVariant
[src]

impl<T6, T7, T8, T9, T10, T11, T12> ToVariant for (T6, T7, T8, T9, T10, T11, T12) where
    T10: ToVariant,
    T11: ToVariant,
    T12: ToVariant,
    T6: ToVariant,
    T7: ToVariant,
    T8: ToVariant,
    T9: ToVariant
[src]

impl<T9, T10, T11, T12> ToVariant for (T9, T10, T11, T12) where
    T10: ToVariant,
    T11: ToVariant,
    T12: ToVariant,
    T9: ToVariant
[src]

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> ToVariant for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) where
    T1: ToVariant,
    T10: ToVariant,
    T11: ToVariant,
    T12: ToVariant,
    T2: ToVariant,
    T3: ToVariant,
    T4: ToVariant,
    T5: ToVariant,
    T6: ToVariant,
    T7: ToVariant,
    T8: ToVariant,
    T9: ToVariant
[src]

impl ToVariant for u16[src]

impl ToVariant for i32[src]

impl<T5, T6, T7, T8, T9, T10, T11, T12> ToVariant for (T5, T6, T7, T8, T9, T10, T11, T12) where
    T10: ToVariant,
    T11: ToVariant,
    T12: ToVariant,
    T5: ToVariant,
    T6: ToVariant,
    T7: ToVariant,
    T8: ToVariant,
    T9: ToVariant
[src]

impl<T11, T12> ToVariant for (T11, T12) where
    T11: ToVariant,
    T12: ToVariant
[src]

impl<T12> ToVariant for (T12,) where
    T12: ToVariant
[src]

impl ToVariant for bool[src]

impl ToVariant for u32[src]

impl<'a, T> ToVariant for &'a T where
    T: ToVariant + ?Sized
[src]

impl<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> ToVariant for (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) where
    T10: ToVariant,
    T11: ToVariant,
    T12: ToVariant,
    T2: ToVariant,
    T3: ToVariant,
    T4: ToVariant,
    T5: ToVariant,
    T6: ToVariant,
    T7: ToVariant,
    T8: ToVariant,
    T9: ToVariant
[src]

impl ToVariant for f32[src]

impl<T> ToVariant for Vec<T> where
    T: ToVariant
[src]

Loading content...

Implementors

impl ToVariant for Aabb[src]

impl ToVariant for Basis[src]

impl ToVariant for Color[src]

impl ToVariant for Dictionary<Shared>[src]

impl ToVariant for GodotString[src]

impl ToVariant for NodePath[src]

impl ToVariant for Plane[src]

impl ToVariant for Rid[src]

impl ToVariant for Transform[src]

impl ToVariant for Variant[src]

impl ToVariant for VariantArray<Shared>[src]

impl<'a, T> ToVariant for TRef<'a, T, Shared> where
    T: GodotObject
[src]

impl<T> ToVariant for TypedArray<T> where
    T: Element
[src]

impl<T> ToVariant for Ref<T, Shared> where
    T: GodotObject
[src]

impl<T, Access> ToVariant for Instance<T, Access> where
    Access: ThreadAccess,
    T: NativeClass,
    Ref<<T as NativeClass>::Base, Access>: ToVariant
[src]

Loading content...