在Rust中访问newtype

时间:2014-11-23 13:25:38

标签: rust

我使用newtype,包装整数数组:

struct Foo([int, ..5]);

显然,我不能简单地这样做:

let foo = Foo([1,2,3,4,5]);
let bar = foo[2];

我访问包装数组的准确程度如何?

1 个答案:

答案 0 :(得分:5)

有一种半(很快就会是两种)方式:

#![feature(tuple_indexing)]

struct Foo([int, ..5]);

fn main() {
    let foo = Foo([1,2,3,4,5]);
    let Foo([_, foo_1, ..]) = foo;
    let foo_3 = foo.0[3];

    println!("[_, {}, _, {}, _]", foo_1, foo_3);
}

具体而言,tuple_indexing可能很快就会被取消,因此您不需要feature属性来使用它。

基本上,Foo元组结构;也就是说,它的行为或多或少就像一个碰巧有名字的元组。