Rust move

一、move有什么用

当你在闭包前 加上 move 关键字 时,闭包会强制获取 其所需变量的所有 权。这意味着即使在闭包外部变量的所有权转移给闭包闭包之外的代码不能再使用这些变量

看两段代码

rust 复制代码
fn main() {
    let x = String::from("value");

    let closure = || {
        println!("x: {}", x);
    };

    closure(); // 调用闭包

    println!("x: {}", x); // 这一行将会导致编译正确,因为变量 x 的所有权没有转移到了闭包内部
}

使用move之后

rust 复制代码
fn main() {
    let x = String::from("value");

    let closure = move|| {
        println!("x: {}", x);
    };

    closure(); // 调用闭包

    println!("x: {}", x); // 这一行将会导致编译错误,因为变量 x 的所有权已经转移到了闭包内部
}
相关推荐
锅包一切13 小时前
一、C++ 发展与程序创建
开发语言·c++·后端·学习·编程
古城小栈14 小时前
后端视角:拆解春晚背后的高可用技术架构
后端·架构
一株菌子14 小时前
10.12 总结
开发语言·python
心之语歌14 小时前
flutter provider 使用,状态管理更新跨组件数据共享
后端·flutter
枷锁—sha14 小时前
【CTFshow-pwn系列】03_栈溢出【pwn 051】详解:C++字符串替换引发的血案与 Ret2Text
开发语言·网络·c++·笔记·安全·网络安全
沙白猿14 小时前
【TJXT】Day3
java·开发语言
Loo国昌14 小时前
【AI应用开发实战】05_GraphRAG:知识图谱增强检索实战
人工智能·后端·python·语言模型·自然语言处理·金融·知识图谱
一个处女座的程序猿O(∩_∩)O14 小时前
Python面向对象的封装特性详解
开发语言·python
zhaoyin199414 小时前
python基础
开发语言·python
颜酱14 小时前
差分数组:高效处理数组区间批量更新的核心技巧
javascript·后端·算法