3个版本
0.1.2 | 2021年2月11日 |
---|---|
0.1.1 | 2021年2月9日 |
0.1.0 | 2021年2月9日 |
1348 在 Rust模式
每月下载量 178
在 4 个crate中使用 (3个直接使用)
15KB
168 行
字符串连接
使用Python-like语法通过字符串连接符连接迭代器的辅助特质
用法
use string_join::Join
"=>".join(["a", "b"].iter().cycle().take(5)); // => "a=>b=>a=>b=>a"
" ".join(&["a", "b", "c"]); // => "a b c"
let mut f = File::write("foo.txt").unwrap();
"\n".write_join(&mut f, &["a", "b", "c"]); // std::io::Result<5> (writes joined string to writer and returns a result
// with either the number of bytes written, or a std::io::Error
lib.rs
:
字符串连接
使用Python-like语法将任何迭代器与任何字符串连接
示例
use string_join::Join;
assert_eq!("=".join(&["a", "b", "c"]), String::from("a=b=c"));
您还可以直接将连接的集合写入到io::Write
use std::fs::File;
use string_join::display::Join;
let mut f = File::create("foo.txt")?;
"\n".write_join(&mut f, &['a', 'b', 'c'])?; // => writes `a\nb\nc` to the writer and returns
// the number of bytes written (5, in this case)
AsRef<str>
与 Display
将集合中的项转换为连接字符串有两种方式。如果所有项以及分隔符都实现了 AsRef<str>
,则我们只需分配一个字符串并将字节写入其中。然而,这限制了我们可以连接的类型。如果我们将可以连接的类型限制为实现 Display
的类型,则可以连接更多类型,但代价是会发生更多的分配。
因此,该crate中有两个模块,string_join::as_ref
和 string_join::display
。它们都提供了一个名为 Join
的特质,并且这两个特质都有 write_join
和 join
方法。然而,一个是针对 AsRef<str>
类型实现的,另一个是针对 Display
类型实现的。这样,crate的用户可以决定使用哪种实现。
为了保持向后兼容性,string_join::Join
与 string_join::as_ref::Join
相同。