(&v)在这段代码中实际上是做什么的?
(&v)
let v = vec!["hello", "viktor"]; let mut iterator = (&v).into_iter(); // Iter<&str>
let mut iterator = &v.into_iter(); // &IntoIter<&str>
它如何改变.into_iter()返回的内容。为什么结果不同?
.into_iter()
ezykj2lf1#
这是一个优先级问题,对于&v.into_iter(),编译器理解&(v.into_iter())而不是(&v).into_iter(),就像当你写1+2*3时,编译器理解1+(2*3)而不是(1+2)*3。
&v.into_iter()
&(v.into_iter())
(&v).into_iter()
1+2*3
1+(2*3)
(1+2)*3
1条答案
按热度按时间ezykj2lf1#
这是一个优先级问题,对于
&v.into_iter()
,编译器理解&(v.into_iter())
而不是(&v).into_iter()
,就像当你写1+2*3
时,编译器理解1+(2*3)
而不是(1+2)*3
。