Skip to main content

Tuple

Trait Tuple 

pub trait Tuple: PartialReflect {
    // Required methods
    fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>;
    fn field_mut(
        &mut self,
        index: usize,
    ) -> Option<&mut (dyn PartialReflect + 'static)>;
    fn field_len(&self) -> usize;
    fn iter_fields(&self) -> TupleFieldIter<'_> ;
    fn drain(self: Box<Self>) -> Vec<Box<dyn PartialReflect>>;

    // Provided methods
    fn to_dynamic_tuple(&self) -> DynamicTuple { ... }
    fn get_represented_tuple_info(&self) -> Option<&'static TupleInfo> { ... }
}
Expand description

A trait used to power tuple-like operations via reflection.

This trait uses the Reflect trait to allow implementors to have their fields be dynamically addressed by index.

This trait is automatically implemented for arbitrary tuples of up to 12 elements, provided that each element implements Reflect.

§Example

use bevy_reflect::{PartialReflect, Tuple};

let foo = (123_u32, true);
assert_eq!(foo.field_len(), 2);

let field: &dyn PartialReflect = foo.field(0).unwrap();
assert_eq!(field.try_downcast_ref::<u32>(), Some(&123));

Required Methods§

fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

Returns a reference to the value of the field with index index as a &dyn Reflect.

fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

Returns a mutable reference to the value of the field with index index as a &mut dyn Reflect.

fn field_len(&self) -> usize

Returns the number of fields in the tuple.

fn iter_fields(&self) -> TupleFieldIter<'_>

Returns an iterator over the values of the tuple’s fields.

fn drain(self: Box<Self>) -> Vec<Box<dyn PartialReflect>>

Drain the fields of this tuple to get a vector of owned values.

Provided Methods§

fn to_dynamic_tuple(&self) -> DynamicTuple

Creates a new DynamicTuple from this tuple.

fn get_represented_tuple_info(&self) -> Option<&'static TupleInfo>

Will return None if TypeInfo is not available.

Trait Implementations§

§

impl GetTupleField for dyn Tuple

§

fn get_field<T>(&self, index: usize) -> Option<&T>
where T: Reflect,

Returns a reference to the value of the field with index index, downcast to T.
§

fn get_field_mut<T>(&mut self, index: usize) -> Option<&mut T>
where T: Reflect,

Returns a mutable reference to the value of the field with index index, downcast to T.

Implementations on Foreign Types§

§

impl Tuple for ()

§

fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

§

fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

§

fn field_len(&self) -> usize

§

fn iter_fields(&self) -> TupleFieldIter<'_>

§

fn drain(self: Box<()>) -> Vec<Box<dyn PartialReflect>>

§

impl<A> Tuple for (A,)
where A: Reflect + MaybeTyped + TypePath + GetTypeRegistration,

§

fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

§

fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

§

fn field_len(&self) -> usize

§

fn iter_fields(&self) -> TupleFieldIter<'_>

§

fn drain(self: Box<(A,)>) -> Vec<Box<dyn PartialReflect>>

§

impl<A, B> Tuple for (A, B)
where A: Reflect + MaybeTyped + TypePath + GetTypeRegistration, B: Reflect + MaybeTyped + TypePath + GetTypeRegistration,

§

fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

§

fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

§

fn field_len(&self) -> usize

§

fn iter_fields(&self) -> TupleFieldIter<'_>

§

fn drain(self: Box<(A, B)>) -> Vec<Box<dyn PartialReflect>>

§

impl<A, B, C> Tuple for (A, B, C)
where A: Reflect + MaybeTyped + TypePath + GetTypeRegistration, B: Reflect + MaybeTyped + TypePath + GetTypeRegistration, C: Reflect + MaybeTyped + TypePath + GetTypeRegistration,

§

fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

§

fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

§

fn field_len(&self) -> usize

§

fn iter_fields(&self) -> TupleFieldIter<'_>

§

fn drain(self: Box<(A, B, C)>) -> Vec<Box<dyn PartialReflect>>

§

impl<A, B, C, D> Tuple for (A, B, C, D)
where A: Reflect + MaybeTyped + TypePath + GetTypeRegistration, B: Reflect + MaybeTyped + TypePath + GetTypeRegistration, C: Reflect + MaybeTyped + TypePath + GetTypeRegistration, D: Reflect + MaybeTyped + TypePath + GetTypeRegistration,

§

fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

§

fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

§

fn field_len(&self) -> usize

§

fn iter_fields(&self) -> TupleFieldIter<'_>

§

fn drain(self: Box<(A, B, C, D)>) -> Vec<Box<dyn PartialReflect>>

§

impl<A, B, C, D, E> Tuple for (A, B, C, D, E)
where A: Reflect + MaybeTyped + TypePath + GetTypeRegistration, B: Reflect + MaybeTyped + TypePath + GetTypeRegistration, C: Reflect + MaybeTyped + TypePath + GetTypeRegistration, D: Reflect + MaybeTyped + TypePath + GetTypeRegistration, E: Reflect + MaybeTyped + TypePath + GetTypeRegistration,

§

fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

§

fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

§

fn field_len(&self) -> usize

§

fn iter_fields(&self) -> TupleFieldIter<'_>

§

fn drain(self: Box<(A, B, C, D, E)>) -> Vec<Box<dyn PartialReflect>>

§

impl<A, B, C, D, E, F> Tuple for (A, B, C, D, E, F)
where A: Reflect + MaybeTyped + TypePath + GetTypeRegistration, B: Reflect + MaybeTyped + TypePath + GetTypeRegistration, C: Reflect + MaybeTyped + TypePath + GetTypeRegistration, D: Reflect + MaybeTyped + TypePath + GetTypeRegistration, E: Reflect + MaybeTyped + TypePath + GetTypeRegistration, F: Reflect + MaybeTyped + TypePath + GetTypeRegistration,

§

fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

§

fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

§

fn field_len(&self) -> usize

§

fn iter_fields(&self) -> TupleFieldIter<'_>

§

fn drain(self: Box<(A, B, C, D, E, F)>) -> Vec<Box<dyn PartialReflect>>

§

impl<A, B, C, D, E, F, G> Tuple for (A, B, C, D, E, F, G)
where A: Reflect + MaybeTyped + TypePath + GetTypeRegistration, B: Reflect + MaybeTyped + TypePath + GetTypeRegistration, C: Reflect + MaybeTyped + TypePath + GetTypeRegistration, D: Reflect + MaybeTyped + TypePath + GetTypeRegistration, E: Reflect + MaybeTyped + TypePath + GetTypeRegistration, F: Reflect + MaybeTyped + TypePath + GetTypeRegistration, G: Reflect + MaybeTyped + TypePath + GetTypeRegistration,

§

fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

§

fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

§

fn field_len(&self) -> usize

§

fn iter_fields(&self) -> TupleFieldIter<'_>

§

fn drain(self: Box<(A, B, C, D, E, F, G)>) -> Vec<Box<dyn PartialReflect>>

§

impl<A, B, C, D, E, F, G, H> Tuple for (A, B, C, D, E, F, G, H)
where A: Reflect + MaybeTyped + TypePath + GetTypeRegistration, B: Reflect + MaybeTyped + TypePath + GetTypeRegistration, C: Reflect + MaybeTyped + TypePath + GetTypeRegistration, D: Reflect + MaybeTyped + TypePath + GetTypeRegistration, E: Reflect + MaybeTyped + TypePath + GetTypeRegistration, F: Reflect + MaybeTyped + TypePath + GetTypeRegistration, G: Reflect + MaybeTyped + TypePath + GetTypeRegistration, H: Reflect + MaybeTyped + TypePath + GetTypeRegistration,

§

fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

§

fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

§

fn field_len(&self) -> usize

§

fn iter_fields(&self) -> TupleFieldIter<'_>

§

fn drain(self: Box<(A, B, C, D, E, F, G, H)>) -> Vec<Box<dyn PartialReflect>>

§

impl<A, B, C, D, E, F, G, H, I> Tuple for (A, B, C, D, E, F, G, H, I)
where A: Reflect + MaybeTyped + TypePath + GetTypeRegistration, B: Reflect + MaybeTyped + TypePath + GetTypeRegistration, C: Reflect + MaybeTyped + TypePath + GetTypeRegistration, D: Reflect + MaybeTyped + TypePath + GetTypeRegistration, E: Reflect + MaybeTyped + TypePath + GetTypeRegistration, F: Reflect + MaybeTyped + TypePath + GetTypeRegistration, G: Reflect + MaybeTyped + TypePath + GetTypeRegistration, H: Reflect + MaybeTyped + TypePath + GetTypeRegistration, I: Reflect + MaybeTyped + TypePath + GetTypeRegistration,

§

fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

§

fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

§

fn field_len(&self) -> usize

§

fn iter_fields(&self) -> TupleFieldIter<'_>

§

fn drain(self: Box<(A, B, C, D, E, F, G, H, I)>) -> Vec<Box<dyn PartialReflect>>

§

impl<A, B, C, D, E, F, G, H, I, J> Tuple for (A, B, C, D, E, F, G, H, I, J)
where A: Reflect + MaybeTyped + TypePath + GetTypeRegistration, B: Reflect + MaybeTyped + TypePath + GetTypeRegistration, C: Reflect + MaybeTyped + TypePath + GetTypeRegistration, D: Reflect + MaybeTyped + TypePath + GetTypeRegistration, E: Reflect + MaybeTyped + TypePath + GetTypeRegistration, F: Reflect + MaybeTyped + TypePath + GetTypeRegistration, G: Reflect + MaybeTyped + TypePath + GetTypeRegistration, H: Reflect + MaybeTyped + TypePath + GetTypeRegistration, I: Reflect + MaybeTyped + TypePath + GetTypeRegistration, J: Reflect + MaybeTyped + TypePath + GetTypeRegistration,

§

fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

§

fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

§

fn field_len(&self) -> usize

§

fn iter_fields(&self) -> TupleFieldIter<'_>

§

fn drain( self: Box<(A, B, C, D, E, F, G, H, I, J)>, ) -> Vec<Box<dyn PartialReflect>>

§

impl<A, B, C, D, E, F, G, H, I, J, K> Tuple for (A, B, C, D, E, F, G, H, I, J, K)
where A: Reflect + MaybeTyped + TypePath + GetTypeRegistration, B: Reflect + MaybeTyped + TypePath + GetTypeRegistration, C: Reflect + MaybeTyped + TypePath + GetTypeRegistration, D: Reflect + MaybeTyped + TypePath + GetTypeRegistration, E: Reflect + MaybeTyped + TypePath + GetTypeRegistration, F: Reflect + MaybeTyped + TypePath + GetTypeRegistration, G: Reflect + MaybeTyped + TypePath + GetTypeRegistration, H: Reflect + MaybeTyped + TypePath + GetTypeRegistration, I: Reflect + MaybeTyped + TypePath + GetTypeRegistration, J: Reflect + MaybeTyped + TypePath + GetTypeRegistration, K: Reflect + MaybeTyped + TypePath + GetTypeRegistration,

§

fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

§

fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

§

fn field_len(&self) -> usize

§

fn iter_fields(&self) -> TupleFieldIter<'_>

§

fn drain( self: Box<(A, B, C, D, E, F, G, H, I, J, K)>, ) -> Vec<Box<dyn PartialReflect>>

§

impl<A, B, C, D, E, F, G, H, I, J, K, L> Tuple for (A, B, C, D, E, F, G, H, I, J, K, L)
where A: Reflect + MaybeTyped + TypePath + GetTypeRegistration, B: Reflect + MaybeTyped + TypePath + GetTypeRegistration, C: Reflect + MaybeTyped + TypePath + GetTypeRegistration, D: Reflect + MaybeTyped + TypePath + GetTypeRegistration, E: Reflect + MaybeTyped + TypePath + GetTypeRegistration, F: Reflect + MaybeTyped + TypePath + GetTypeRegistration, G: Reflect + MaybeTyped + TypePath + GetTypeRegistration, H: Reflect + MaybeTyped + TypePath + GetTypeRegistration, I: Reflect + MaybeTyped + TypePath + GetTypeRegistration, J: Reflect + MaybeTyped + TypePath + GetTypeRegistration, K: Reflect + MaybeTyped + TypePath + GetTypeRegistration, L: Reflect + MaybeTyped + TypePath + GetTypeRegistration,

§

fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

§

fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

§

fn field_len(&self) -> usize

§

fn iter_fields(&self) -> TupleFieldIter<'_>

§

fn drain( self: Box<(A, B, C, D, E, F, G, H, I, J, K, L)>, ) -> Vec<Box<dyn PartialReflect>>

Implementors§