Crates.io | type_at |
lib.rs | type_at |
version | 0.1.0 |
source | src |
created_at | 2021-10-08 09:43:55.282538 |
updated_at | 2021-10-08 09:43:55.282538 |
description | Utility trait to index type of Rust tuples. |
homepage | |
repository | https://github.com/robbepop/type_at |
max_upload_size | |
id | 462266 |
size | 18,654 |
Provides a trait TypeAt
which allow to query the n-th type of a Rust tuple at compile time.
use type_at::TypeAt;
let _: i8 = <(i8, i16, i32, i64) as TypeAt<0>>::Type::default();
let _: i16 = <(i8, i16, i32, i64) as TypeAt<1>>::Type::default();
let _: i32 = <(i8, i16, i32, i64) as TypeAt<2>>::Type::default();
let _: i64 = <(i8, i16, i32, i64) as TypeAt<3>>::Type::default();
use type_at::TypeAt;
let _: i64 = <<<<(i8, (i16, (i32, (i64,))))
as TypeAt<1>>::Type // (i16, (i32, (i64,)))
as TypeAt<1>>::Type // (i32, (i64,))
as TypeAt<1>>::Type // (i64,)
as TypeAt<0>>::Type::default();
#[derive(TypeAt)]
pub struct TupleStruct(i8, i16, i32);
let _: i8 = <TupleStruct as TypeAt<0>>::Type::default();
let _: i16 = <TupleStruct as TypeAt<1>>::Type::default();
let _: i32 = <TupleStruct as TypeAt<2>>::Type::default();
#[derive(TypeAt)]
pub struct Struct { a: i8, b: i16, c: i32 }
let _: i8 = <Struct as TypeAt<0>>::Type::default();
let _: i16 = <Struct as TypeAt<1>>::Type::default();
let _: i32 = <Struct as TypeAt<2>>::Type::default();
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as below, without any additional terms or conditions.