gpt4 book ai didi

rust - 为什么在链表上调用 into_iter 时 self 不移动?

转载 作者:行者123 更新时间:2023-11-29 08:34:52 24 4
gpt4 key购买 nike

在书中Learning Rust With Entirely Too Many Linked Lists ,它会尝试为列表创建一个迭代器:

pub struct IntoIter<T>(List<T>);

impl<T> List<T> {
pub fn into_iter(self) -> IntoIter<T> {
IntoIter(self)
}
}

为什么 self 没有被移动? self 参数是 pub fn into_iter(self) 引用还是值? self 是否特殊并且不遵守移动或借用的通用规则? IntoIterList 之间有什么关系?

最佳答案

self 参数特殊(与此问题相关的任何方式)。 into_iter 被调用的对象 移动。此外,在该方法中,变量 self 然后被移动到 IntoIter 结构中,就像本例中的任何 x 一样:

fn into_iter_external<T>(x: List<T>) -> IntoIter<T> {
IntoIter(x)
}

关于rust - 为什么在链表上调用 into_iter 时 self 不移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38161061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com