You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Rust中整数变量赋值给其他变量后仍可被使用?

Rust所有权:为什么整数赋值后原变量仍可使用?

先看你给出的代码示例:

let u_own = 3432;
let d_own = u_own;
println!("{}", u_own);

你遇到的这个情况,核心原因是整数类型属于Rust的Copy类型。

Rust里,实现了Copy trait的类型在赋值、函数传参等场景下,会自动复制一份值,而不是转移所有权。这类类型的复制成本极低,所以语言设计上直接默认复制,而非移动所有权。常见的Copy类型包括:

  • 所有整数(i8、i32、u64等)、浮点数(f32、f64)类型
  • 布尔类型bool、字符类型char
  • 由Copy类型组成的元组(比如(i32, bool))

如果换成非Copy类型(比如String),所有权转移的行为就会符合你的预期:

let u_own = String::from("hello");
let d_own = u_own;
println!("{}", u_own); // 此处编译器会报错,因为String的所有权已转移给d_own

简单总结:

  • Copy类型赋值时,复制值,原变量保留所有权,可继续使用
  • 非Copy类型赋值时,转移所有权,原变量不可再访问

内容的提问来源于stack exchange,提问作者softshipper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 06:10:41