Rust 无法链接访问元组类型

Rust 无法链接访问元组类型,rust,Rust,鉴于: 我可以做到: struct NameType([u8;64]); name: (NameType, NameType); 但我不能这样做: let def = &name.0 OR &name.1 以接近内部构件。我必须做两次: let def = &name.0.0 OR &name.1.0 为什么我无法链接它来访问内部子元组、元组结构等 let abc = &name.0; let def = &abc.0; 如

鉴于:

我可以做到:

struct NameType([u8;64]);
name: (NameType, NameType);
但我不能这样做:

let def = &name.0   OR   &name.1
以接近内部构件。我必须做两次:

let def = &name.0.0   OR   &name.1.0
为什么我无法链接它来访问内部子元组、元组结构等

let abc = &name.0;
let def = &abc.0;

如注释中所述,
foo.0.0
将被解析为具有数字。具体而言,这是:

我宁愿不改变lexer来允许a.0.1。我宁愿这是一个错误,让人们把名字写出来。我们可以以后再加

您当然可以提交bug,但作为一种解决方法,请使用括号:

rustc 1.0.0-nightly (ecf8c64e1 2015-03-21) (built 2015-03-22)

在我看来,无论如何,你不应该嵌套那么深的元组。我强烈建议在你慢慢发疯之前给字段命名,然后再决定你是想要
foo.0.1.2
还是
foo.1.2.0

除了上面的答案,我还发现一个缺口会产生奇迹:)所以


很好。不知道这意味着什么,但如果有人想这样做,有一种方法可以将其链接起来。不过(不使用括号)

您是否尝试过在语句周围加括号,例如
let def=(&name.0).0
?@BinkanSalaryman啊,是的,它可以使用括号。但这意味着什么?为什么不允许使用无支架的链条?上面的两个步骤(有效)应该更自然地组合成一个没有括号的步骤(随着类型由越来越多的子类型组成,括号将不断增长)。那么你能解释一下为什么这是必要的吗?编译器将“0.0”识别为十进制数(我在rust-lang.org上测试过),我想你可以在
http://users.rust-lang.org/
A
(foo.0).0
foo.0. 0  OR  foo.0 . 0 etc all work