在某些语言中,可以写这样的东西:

val some_string =
  """First line.
    | Second line, with leading space."""

也就是说,一个多行字符串,其中所有前导空格都被删除到某一点,但不再删除.这可以通过书写在Rust中模仿:

let some_string = 
    "First line.\n \
     Second line, with leading space.";

然而,这失go 了更接近实际输出的好处.有没有办法编写类似于示例伪代码的东西,保留(一些)前导空格?

推荐答案

不,这是不可能的(v1.3,而且可能会持续很长时间).

然而,通常需要人类可读的多行字符串文字是某种恒定的描述,比如CLI程序的用法字符串.你经常会看到这样的缩进:

const USAGE: &'static str = "
Naval Fate.

Usage:
  ...
";

我想这没关系.如果你有很多这样的字符串或一个非常大的字符串,你可以使用include_str!.

Rust相关问答推荐

给定使用newype习语定义的类型上的铁 rust Vec,有没有方法获得底层原始类型的一部分?

阻止websocket中断的中断中断的终端(操作系统错误4)

go 掉包装 struct 中的泛型

为什么复印是豆荚的一个重要特征?

如何为utoipa中的可选查询参数生成OpenAPI模式?

为什么`Vec i64`的和不知道是`Option i64`?

如何在 struct 的自定义序列化程序中使用serde序列化_WITH

如何实现Deref;多次;?

如何将带有嵌套borrow /NLL 的 Rust 代码提取到函数中

使用启用优化的 alloc 会导致非法指令崩溃

可选包装枚举的反序列化

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

存储返回 impl Trait 作为特征对象的函数

如何在Rust中使用Serde创建一个自定义的反序列化器来处理带有内部标记的枚举

Rust 打包在 .deb 中

哪些特征通过 `Deref` 而哪些不通过?

使用 `clap` 在 Rust CLI 工具中设置布尔标志

为什么1..=100返回一个范围而不是一个整数?

在 Rust 中组合特征的不同方法是否等效?

如何在宏中的多个参数上编写嵌套循环?