[][src]Trait gdnative_core::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.

Required methods

fn to_variant(&self) -> Variant

Loading content...

Implementations on Foreign Types

impl ToVariant for ()[src]

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

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

impl ToVariant for i64[src]

impl ToVariant for u64[src]

impl ToVariant for f64[src]

impl ToVariant for i8[src]

impl ToVariant for i16[src]

impl ToVariant for i32[src]

impl ToVariant for isize[src]

impl ToVariant for u8[src]

impl ToVariant for u16[src]

impl ToVariant for u32[src]

impl ToVariant for usize[src]

impl ToVariant for f32[src]

impl ToVariant for str[src]

impl ToVariant for String[src]

impl ToVariant for bool[src]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Loading content...

Implementors

impl ToVariant for Aabb[src]

impl ToVariant for Basis[src]

impl ToVariant for Plane[src]

impl ToVariant for Transform[src]

impl ToVariant for ByteArray[src]

impl ToVariant for Color[src]

impl ToVariant for ColorArray[src]

impl ToVariant for Dictionary[src]

impl ToVariant for Float32Array[src]

impl ToVariant for GodotString[src]

impl ToVariant for Int32Array[src]

impl ToVariant for NodePath[src]

impl ToVariant for Object[src]

impl ToVariant for Reference[src]

impl ToVariant for Rid[src]

impl ToVariant for StringArray[src]

impl ToVariant for Variant[src]

impl ToVariant for VariantArray[src]

impl ToVariant for Vector2Array[src]

impl ToVariant for Vector3Array[src]

impl ToVariant for Quat[src]

impl ToVariant for Rect2[src]

impl ToVariant for Transform2D[src]

impl ToVariant for Vector2[src]

impl ToVariant for Vector3[src]

impl<T> ToVariant for Instance<T> where
    T: NativeClass,
    T::Base: ToVariant
[src]

Loading content...