假设:
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;
为什么我无法链接它来访问内部子元组,元组结构等?
rustc 1.0.0-nightly (ecf8c64e1 2015-03-21) (built 2015-03-22)
答案 0 :(得分:1)
如评论中所述,foo.0.0
将被解析为具有数字。这是originally mentioned in the RFC,特别是this:
我宁愿不改变词法分析器以允许a.0.1。我宁愿让这是一个错误,并让人们写出名字。我们总是可以在以后添加它。
您当然可以提交错误,但作为解决方法,请使用括号:
(foo.0).0
在我看来,你无论如何都不应该嵌套深层次的元组。我强烈建议在你慢慢决定是否想要foo.0.1.2
或foo.1.2.0
之前给字段命名。
答案 1 :(得分:1)
除了上述答案之外,我还发现差距会产生奇迹:)所以;
foo.0. 0 OR foo.0 . 0 etc all work
很好。不知道它意味着多少但是如果有人想要的话,有一种方法可以将它链接起来(不使用括号)