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

Rust使用println!打印时报`()`无法使用默认格式化器错误

报错原因
  • 核心问题是mystring.rs中的return_string函数未声明返回值类型。Rust 中没有显式标注返回值类型的函数,默认返回单元类型()(空元组,等价于其他语言的void类型),即使你在函数体内写了return "Some String",编译器也不会按字符串类型处理返回值,函数最终实际返回的是()。
  • 单元类型()没有实现Display特征,无法被println!宏的{}默认格式化器识别,直接触发你看到的编译报错。
  • 你的调用代码还有两处额外的写法错误,哪怕修正了返回值类型也会编译失败:一是模块名不匹配,你声明的模块名为mystring,调用时却写了config::return_string();二是普通函数的返回值不能直接赋值给const常量,const要求值在编译期就能确定,普通函数调用属于运行期逻辑,不符合常量赋值要求。
修改方案
  1. 先修正mystring.rs中的函数定义,显式标注正确的返回值类型。Rust中字符串字面量的类型是&'static str:
// mystring.rs
pub fn return_string() -> &'static str {
    "Some String"
}

注:Rust 支持函数尾表达式自动返回,即最后一行表达式不加分号就会作为返回值,不需要额外写return关键字;如果习惯写return,记得语句末尾要加分号:return "Some String";

  1. 再修正main.rs中的调用逻辑,修正模块名,用普通变量绑定接收返回值:
// main.rs
mod mystring;

fn main() {
    let test = mystring::return_string();
    println!("{}", test);
}

修改完成后编译运行,即可正常打印出Some String。
如果确实需要用常量接收返回值,可以把return_string标记为常量函数,再显式标注常量类型即可:

// mystring.rs
pub const fn return_string() -> &'static str {
    "Some String"
}

// main.rs
mod mystring;
const TEST: &str = mystring::return_string();

fn main() {
    println!("{}", TEST);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:09:22