我是新来的拉斯特.在try 连接字符串字面值和整数时,由于"TO_STRING"函数出现了许多错误.之后,我意识到我需要在整数前面放一个引用/与号(&).然而,我不明白为什么.您能解释一下为什么我需要在to_string函数的整数前面放一个引用符号吗?我在下面编写了一个示例代码.

fn main() {
    let number = 42;
    let text = "The answer is";
    let result = text.to_owned() + " " + &number.to_string();
    println!("{}", result);
}

推荐答案

因为字符串的+运算符将String&str作为that is what the std::ops::Add implementation takes,而不是StringString.

这是因为要有效地连接一个字符串,您需要拥有一个字符串,这样我们就可以重用它的缓冲区,并可能避免分配,但您不需要拥有另一个字符串,引用就足够了.从技术上讲,impl Add<String> for &str没有理由不能提供,它只是不存在.

Rust相关问答推荐

基于对vec值的引用从该值中删除该值

使用元组执行条件分支的正确方法

使用Rust s serde_json对混合数据类型进行优化'

为什么BitVec缺少Serialize trait?

如何正确地将App handler传递给Tauri中的其他模块?

在使用#[NO_STD]时,如何在Rust中收到紧急消息?

一种随机局部搜索算法的基准(分数)

循环访问枚举中的不同集合

在Rust内联程序集中使用字符串常量

解析程序无法在Cargo 发布中 Select 依赖版本

这是什么:`impl Trait for T {}`?

`UnsafeCell` 在没有锁定的情况下跨线程共享 - 这可能会导致 UB,对吗?

使用 traits 时,borrow 的值不会存在足够长的时间

在运行时在 Rust 中加载字体

从函数返回 u32 的数组/切片

将数据序列化为 struct 模型,其中两个字段的数据是根据 struct 中的其他字段计算的

如何从 many0 传播 Nom 失败上下文?

如何在 Rust 的内置函数上实现特征?

基于名称是否存在的条件编译

如何从 Rust 应用程序连接到 Docker 容器中的 SurrealDB?