相关疑难解决方法(0)

什么是Rust中的移动语义?

在Rust中,有两种可能性来引用

  1. 借用,即参考,但不允许改变参考目的地.该&运营商借用值所有权.

  2. 可变地借用,即参考改变目的地.该&mut运营商性情不定地借用一个值所有权.

有关借用规则Rust文档说:

首先,任何借入必须持续不超过所有者的范围.其次,您可能拥有这两种借款中的一种或另一种,但不能同时使用这两种:

  • 一个或多个&T资源的引用(),
  • 一个可变的引用(&mut T).

我相信引用一个引用是创建一个指向值的指针并通过指针访问该值.如果存在更简单的等效实现,则编译器可以优化它.

但是,我不明白什么是移动的意思以及它是如何实现的.

对于实现Copy特征的类型,它意味着复制,例如通过从源分配结构成员,或者a memcpy().对于小结构或原始数据,此副本是有效的.

而对于

这个问题不是什么是移动语义的重复因为Rust和C++是不同的语言,移动语义在两者之间是不同的.

ownership move-semantics rust

21
推荐指数
2
解决办法
5734
查看次数

在 Rust 中删除单向链表中的节点

我是 Rust 的新手,想在 Rust 中编写链表以获得乐趣。我对如何删除链表中的节点感到困惑。这是我的简单代码。

#[derive(Debug)]
struct Node{
    v: usize,
    next: Option<Box<Node>>,
}

struct LinkedList {
    head: Option<Box<Node>>,
}

impl LinkedList {
    fn remove(&mut self, v: usize) -> Option<usize> {
        let mut current_node: &mut Option<Box<Node>> = &mut self.head;
        loop {
           match current_node {
                None => break,
                Some(node) => {
                    if node.v == v {
                        // current_node = what? 
                        // ???????????????
                        break;
                    } else {
                        current_node = &mut node.next;
                    }
                },
            };
        }

        match current_node.take().map(|x| *x) {
            Some(node) => {
                *current_node …
Run Code Online (Sandbox Code Playgroud)

linked-list rust data-structures

7
推荐指数
1
解决办法
757
查看次数