#join #string #iterator #separator #items #io #write

string-join

使用Python-like语法将迭代器中的项目用分隔符连接起来

3个版本

0.1.2 2021年2月11日
0.1.1 2021年2月9日
0.1.0 2021年2月9日

1348Rust模式

Download history 16/week @ 2023-12-18 9/week @ 2023-12-25 17/week @ 2024-01-08 10/week @ 2024-01-15 2/week @ 2024-01-22 3/week @ 2024-01-29 4/week @ 2024-02-05 22/week @ 2024-02-12 24/week @ 2024-02-19 46/week @ 2024-02-26 22/week @ 2024-03-04 60/week @ 2024-03-11 23/week @ 2024-03-18 26/week @ 2024-03-25 64/week @ 2024-04-01

每月下载量 178
4 个crate中使用 (3个直接使用)

AGPL-3.0

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_refstring_join::display。它们都提供了一个名为 Join 的特质,并且这两个特质都有 write_joinjoin 方法。然而,一个是针对 AsRef<str> 类型实现的,另一个是针对 Display 类型实现的。这样,crate的用户可以决定使用哪种实现。

为了保持向后兼容性,string_join::Joinstring_join::as_ref::Join 相同。

无运行时依赖