Trait gdnative::core_types::FromVariant
source · [−]pub trait FromVariant {
fn from_variant(variant: &Variant) -> Result<Self, FromVariantError>;
}
Expand description
Types that can be converted from a Variant
. Conversions are performed in Rust, and can be
implemented for custom types.
FromVariant
generally avoids inexact conversions, favoring returning an error instead,
with the noted exception of integer and float types that are not supported by Godot natively.
This is stricter than what GDScript performs by default. For weakly-typed coercions of GDScript
built-in typed, see CoerceFromVariant
instead.
This trait is used for argument types of exported methods.
Option<T>
and MaybeNot<T>
Option<T>
requires the Variant to be T
or Nil
, in that order. For looser semantics,
use MaybeNot<T>
, which will catch all variant values that are not T
as well.
Vec<T>
The FromVariant
implementation for Vec<T>
only allow homogeneous arrays. If you want to
manually handle potentially heterogeneous values e.g. for error reporting, use VariantArray
directly or compose with an appropriate wrapper: Vec<Option<T>>
or Vec<MaybeNot<T>>
.
Deriving FromVariant
The derive macro provides implementation consistent with derived ToVariant
. See ToVariant
for detailed documentation.
Required Methods
fn from_variant(variant: &Variant) -> Result<Self, FromVariantError>
Implementations on Foreign Types
sourceimpl<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> FromVariant for (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)where
T2: FromVariant,
T3: FromVariant,
T4: FromVariant,
T5: FromVariant,
T6: FromVariant,
T7: FromVariant,
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
impl<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> FromVariant for (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)where
T2: FromVariant,
T3: FromVariant,
T4: FromVariant,
T5: FromVariant,
T6: FromVariant,
T7: FromVariant,
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
sourceimpl<T11, T12> FromVariant for (T11, T12)where
T11: FromVariant,
T12: FromVariant,
impl<T11, T12> FromVariant for (T11, T12)where
T11: FromVariant,
T12: FromVariant,
fn from_variant(v: &Variant) -> Result<(T11, T12), FromVariantError>
sourceimpl<T7, T8, T9, T10, T11, T12> FromVariant for (T7, T8, T9, T10, T11, T12)where
T7: FromVariant,
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
impl<T7, T8, T9, T10, T11, T12> FromVariant for (T7, T8, T9, T10, T11, T12)where
T7: FromVariant,
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
sourceimpl FromVariant for String
impl FromVariant for String
fn from_variant(variant: &Variant) -> Result<String, FromVariantError>
sourceimpl FromVariant for f32
impl FromVariant for f32
fn from_variant(variant: &Variant) -> Result<f32, FromVariantError>
sourceimpl FromVariant for i64
impl FromVariant for i64
fn from_variant(variant: &Variant) -> Result<i64, FromVariantError>
sourceimpl FromVariant for i16
impl FromVariant for i16
fn from_variant(variant: &Variant) -> Result<i16, FromVariantError>
sourceimpl<T9, T10, T11, T12> FromVariant for (T9, T10, T11, T12)where
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
impl<T9, T10, T11, T12> FromVariant for (T9, T10, T11, T12)where
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
fn from_variant(v: &Variant) -> Result<(T9, T10, T11, T12), FromVariantError>
sourceimpl<T5, T6, T7, T8, T9, T10, T11, T12> FromVariant for (T5, T6, T7, T8, T9, T10, T11, T12)where
T5: FromVariant,
T6: FromVariant,
T7: FromVariant,
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
impl<T5, T6, T7, T8, T9, T10, T11, T12> FromVariant for (T5, T6, T7, T8, T9, T10, T11, T12)where
T5: FromVariant,
T6: FromVariant,
T7: FromVariant,
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
sourceimpl<T> FromVariant for Option<T>where
T: FromVariant,
impl<T> FromVariant for Option<T>where
T: FromVariant,
fn from_variant(variant: &Variant) -> Result<Option<T>, FromVariantError>
sourceimpl<T4, T5, T6, T7, T8, T9, T10, T11, T12> FromVariant for (T4, T5, T6, T7, T8, T9, T10, T11, T12)where
T4: FromVariant,
T5: FromVariant,
T6: FromVariant,
T7: FromVariant,
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
impl<T4, T5, T6, T7, T8, T9, T10, T11, T12> FromVariant for (T4, T5, T6, T7, T8, T9, T10, T11, T12)where
T4: FromVariant,
T5: FromVariant,
T6: FromVariant,
T7: FromVariant,
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
sourceimpl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> FromVariant for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)where
T1: FromVariant,
T2: FromVariant,
T3: FromVariant,
T4: FromVariant,
T5: FromVariant,
T6: FromVariant,
T7: FromVariant,
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> FromVariant for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)where
T1: FromVariant,
T2: FromVariant,
T3: FromVariant,
T4: FromVariant,
T5: FromVariant,
T6: FromVariant,
T7: FromVariant,
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
sourceimpl FromVariant for ()
impl FromVariant for ()
fn from_variant(variant: &Variant) -> Result<(), FromVariantError>
sourceimpl<T10, T11, T12> FromVariant for (T10, T11, T12)where
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
impl<T10, T11, T12> FromVariant for (T10, T11, T12)where
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
fn from_variant(v: &Variant) -> Result<(T10, T11, T12), FromVariantError>
sourceimpl<T8, T9, T10, T11, T12> FromVariant for (T8, T9, T10, T11, T12)where
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
impl<T8, T9, T10, T11, T12> FromVariant for (T8, T9, T10, T11, T12)where
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
fn from_variant(
v: &Variant
) -> Result<(T8, T9, T10, T11, T12), FromVariantError>
sourceimpl FromVariant for i8
impl FromVariant for i8
fn from_variant(variant: &Variant) -> Result<i8, FromVariantError>
sourceimpl<T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> FromVariant for (T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)where
T3: FromVariant,
T4: FromVariant,
T5: FromVariant,
T6: FromVariant,
T7: FromVariant,
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
impl<T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> FromVariant for (T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)where
T3: FromVariant,
T4: FromVariant,
T5: FromVariant,
T6: FromVariant,
T7: FromVariant,
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
sourceimpl<T6, T7, T8, T9, T10, T11, T12> FromVariant for (T6, T7, T8, T9, T10, T11, T12)where
T6: FromVariant,
T7: FromVariant,
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
impl<T6, T7, T8, T9, T10, T11, T12> FromVariant for (T6, T7, T8, T9, T10, T11, T12)where
T6: FromVariant,
T7: FromVariant,
T8: FromVariant,
T9: FromVariant,
T10: FromVariant,
T11: FromVariant,
T12: FromVariant,
sourceimpl FromVariant for u64
impl FromVariant for u64
fn from_variant(variant: &Variant) -> Result<u64, FromVariantError>
sourceimpl FromVariant for usize
impl FromVariant for usize
fn from_variant(variant: &Variant) -> Result<usize, FromVariantError>
sourceimpl FromVariant for u16
impl FromVariant for u16
fn from_variant(variant: &Variant) -> Result<u16, FromVariantError>
sourceimpl FromVariant for bool
impl FromVariant for bool
fn from_variant(variant: &Variant) -> Result<bool, FromVariantError>
sourceimpl FromVariant for i32
impl FromVariant for i32
fn from_variant(variant: &Variant) -> Result<i32, FromVariantError>
sourceimpl FromVariant for f64
impl FromVariant for f64
fn from_variant(variant: &Variant) -> Result<f64, FromVariantError>
sourceimpl<T, E> FromVariant for Result<T, E>where
T: FromVariant,
E: FromVariant,
impl<T, E> FromVariant for Result<T, E>where
T: FromVariant,
E: FromVariant,
fn from_variant(variant: &Variant) -> Result<Result<T, E>, FromVariantError>
sourceimpl<K, V> FromVariant for HashMap<K, V, RandomState>where
K: FromVariant + Hash + Eq,
V: FromVariant,
impl<K, V> FromVariant for HashMap<K, V, RandomState>where
K: FromVariant + Hash + Eq,
V: FromVariant,
Expects a Variant
populated with a Dictionary
and tries to convert it into a HashMap
.
Since Rust’s HashMap
is unordered, there is no guarantee about the resulting element order.
In fact it is possible that two program invocations cause a different output.
fn from_variant(
variant: &Variant
) -> Result<HashMap<K, V, RandomState>, FromVariantError>
sourceimpl FromVariant for u8
impl FromVariant for u8
fn from_variant(variant: &Variant) -> Result<u8, FromVariantError>
sourceimpl<T> FromVariant for Vec<T, Global>where
T: FromVariant,
impl<T> FromVariant for Vec<T, Global>where
T: FromVariant,
fn from_variant(variant: &Variant) -> Result<Vec<T, Global>, FromVariantError>
sourceimpl<T> FromVariant for HashSet<T, RandomState>where
T: FromVariant + Eq + Hash,
impl<T> FromVariant for HashSet<T, RandomState>where
T: FromVariant + Eq + Hash,
Expects a Variant
populated with a VariantArray
and tries to convert it into a HashSet
.
Since Rust’s HashSet
is unordered, there is no guarantee about the resulting element order.
In fact it is possible that two program invocations cause a different output.