超载& self和& mut self方法

时间:2018-01-12 14:52:03

标签: rust const overloading const-correctness

Rust与C ++不同,没有函数重载。考虑一个链接列表模型,在C ++中,它看起来像:

template <typename T>
class Node {
private:
    T value;
    std::unique_ptr<Node<T>> next;

public:
    Node<T>& getNext();
    const Node<T>& getNext() const;
};

当您处理常量列表时,您无法修改它,因为您只能访问const Node<T>&,同时您可以修改非常量列表。

Rust中这种行为的等价物是什么?考虑使用多种方法的更复杂的示例。 &mut self&self只有部分内容必须重载。

pub struct Node<T> {
    value: T,
    next: Option<Box<Node<T>>>,
}
impl<T> Node<T> {
    pub fn getNext(&self) -> Option<&Self> {}
    pub fn getNext(&mut self) -> Option<&mut Self> {}
}

0 个答案:

没有答案