7 个版本
0.3.0 | 2023年10月18日 |
---|---|
0.2.3 | 2023年10月7日 |
0.1.1 | 2023年10月3日 |
#160 in 值格式化
82 个月下载量
在 finra-rs 中使用
18KB
317 行
join-string
一个简单的库,用于将元素连接成字符串,在所有元素之间插入分隔符。
如果可能,这将以某种方式高效完成,这意味着如果迭代器可以廉价地克隆,则可以直接打印 Join::join()
的结果,而不需要在内存中创建一个临时的 String
。 Join::join()
方法将出现在实现了 std::iter::IntoIterator
的任何事物上,这意味着所有迭代器和集合。元素和分隔符需要实现 std::fmt::Display
。或者可以使用 Join::join_str()
方法来连接仅实现了 AsRef<str>
的元素。
示例
use join_string::Join;
assert_eq!(
"foo bar baz".split_whitespace().join(", ").into_string(),
"foo, bar, baz");
println!("{}",
"foo bar baz".split_whitespace()
.map(|s| s.chars().rev().join(""))
.join(' '));
// Output: oof rab zab
您还可以将结果直接写入到 std::io::Write
或 std::fmt::Write
,即使底层迭代器没有实现 Clone
。
use join_string::Join;
["foo", "bar", "baz"].join(", ").write_io(std::io::stdout())?;
let mut str = String::new();
["foo", "bar", "baz"].join(", ").write_fmt(&mut str)?;
注意
标准库已经为切片提供了类似的 std::slice::Join
特性,但没有在迭代器上,并且标准库版本总是直接返回一个新的 String
。此外,还有多个其他类似的功能包,但它们的工作方式略有不同,例如对元素和分隔符类型有更多限制或总是返回一个 String
。