我正在try 连接静态字符串和字符串文本以构建另一个静态字符串.以下是我能想到的最好的方法,但它不起作用:

const DESCRIPTION: &'static str = "my program";
const VERSION: &'static str = env!("CARGO_PKG_VERSION");
const VERSION_STRING: &'static str = concat!(DESCRIPTION, " v", VERSION);

有没有办法在Rust中做到这一点,或者我必须一遍又一遍地写同样的文字?

推荐答案

因为我基本上是在try 模拟C宏,所以我try 用Rust宏解决这个问题,并取得了成功:

macro_rules! description {
    () => ( "my program" )
}
macro_rules! version {
    () => ( env!("CARGO_PKG_VERSION") )
}
macro_rules! version_string {
    () => ( concat!(description!(), " v", version!()) )
}

使用宏而不是常量感觉有点难看,但它的工作原理与预期相符.

Rust相关问答推荐

有条件默认实现

在泛型 struct 的字段声明中访问关联的Conant

铁 rust 干线无法使用PowerShell获取环境变量

如果LET;使用布尔表达式链接(&Q);

如何使用盒装枚举进行模式匹配?

rust 蚀生命周期 不匹配-不一定超过此处定义的生命周期

如何在Rust中缩短数组

为什么比较Option<;字符串>;具有常数Option<&;str>;需要显式类型转换吗?

如何强制匹配的返回类型为()?

为什么编译器看不到这个 `From` impl?

需要哪些编译器优化来优化此递归调用?

如何在 Rust 中打印 let-else 语句中的错误?

.to_owned()、.clone() 和取消引用 (*) 之间有区别吗?

在Rust中实现Trie数据 struct 的更好方式

我的 Axum 处理程序无法编译:未实现 IntoResponse 特征

如何创建递归borrow 其父/创建者的 struct ?

`use std::error::Error` 声明中断编译

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

当值是新类型包装器时,对键的奇怪 HashMap 生命周期要求

返回引用的返回函数