Tag: 铁锈

通过迭代recursion结构来获得可变引用

我试图迭代地浏览一个recursion数据结构,以便在某个位置插入元素。 就我的有限理解而言,这意味着要对结构的根源进行可变的引用,并且通过引用其追随者来替代它: type Link = Option<Box<Node>>; struct Node { next: Link } struct Recursive { root: Link } impl Recursive { fn back(&mut self) -> &mut Link { let mut anchor = &mut self.root; while let Some(ref mut node) = *anchor { anchor = &mut node.next; } anchor } } (铁锈操场链接) 但是,这失败了: error[E0499]: cannot borrow […]

我如何实现我不拥有的types,我不拥有?

我想实现Vec的Shl特性,代码如下。 这会使vec << 4可能,这将是vec.push(4)好糖。 use std::ops::Shl; impl<T> Shl<T> for Vec<T> { type Output = Vec<T>; fn shl(&self, elem: &T) -> Vec<T> { self.push(*elem); *self } } fn main() { let v = vec![1, 2, 3]; v << 4; } 编译失败,出现以下错误: 不能提供一个扩展实现,在这个包中没有定义特征和types[E0117] 要么 types参数T必须用作某些本地types的types参数(例如MyStruct<T> ); 只有当前机箱中定义的特征才能用于types参数[E0210] 据我了解,我不得不修补stdlib,更具体的collections::vec箱子。 是否有另一种方法来更改此代码编译成功?