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

Rust中无法对&str类型使用+=赋值操作,该如何改写代码?

解决Rust中&str无法使用+=的问题,实现类似Kotlin的字符串追加逻辑

报错原因

你遇到的二元赋值操作+=无法应用于&str类型错误,核心原因是:

  • ""是不可变字符串切片(&str),Rust不允许修改不可变引用指向的内容
  • +=操作符在Rust中仅支持左侧为String(可变堆分配字符串)、右侧为&str的场景,直接追加char类型也不符合语法要求

正确实现方式

方式1:用String+push(推荐,效率更高)

把初始的&str换成可变的String,用push方法追加单个字符,对应Kotlin中+= char的逻辑:

pub fn is_palindrome(x: i32) -> bool {
    let mut rev = String::new();
    let s = x.to_string();

    for n in s.chars().rev() {
        rev.push(n);
    }

    s == rev
}

方式2:用String++=(贴近Kotlin语法习惯)

如果一定要用类似+=的写法,可以把char转为&str后追加:

pub fn is_palindrome(x: i32) -> bool {
    let mut rev = String::new();
    let s = x.to_string();

    for n in s.chars().rev() {
        rev += &n.to_string();
    }

    s == rev
}

注意:这种方式会为每个字符创建临时字符串,效率比push低,不推荐频繁使用。

方式3:迭代器链式调用(Rust风格,最简洁)

直接利用Rust的迭代器特性,一行完成反转和比较:

pub fn is_palindrome(x: i32) -> bool {
    let s = x.to_string();
    s.chars().rev().collect::<String>() == s
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:10:50