#join #iterator #separator #string #iterable #joining #elements

无 std joinery

一个小型库,用于使用分隔符通用地连接迭代器

16 个版本 (稳定)

3.1.0 2022 年 9 月 14 日
2.1.0 2021 年 5 月 24 日
2.0.0 2019 年 2 月 10 日
1.2.2 2018 年 9 月 16 日
0.2.1 2018 年 7 月 30 日

#133Rust 模式

Download history 32615/week @ 2024-03-14 43637/week @ 2024-03-21 39240/week @ 2024-03-28 31061/week @ 2024-04-04 32125/week @ 2024-04-11 37916/week @ 2024-04-18 39273/week @ 2024-04-25 40055/week @ 2024-05-02 31534/week @ 2024-05-09 42761/week @ 2024-05-16 42129/week @ 2024-05-23 50831/week @ 2024-05-30 37211/week @ 2024-06-06 37204/week @ 2024-06-13 39787/week @ 2024-06-20 31738/week @ 2024-06-27

157,078 每月下载量
用于 128 个 crate (11 个直接使用)

MIT 许可证

46KB
718

Travis (.com) GitHub stars Crates.io docs.rs Github commits (since latest release) license

joinery

一个用于使用分隔符通用地连接可迭代的 Rust 库。为 Rust 提供了悲剧性地缺失的字符串连接功能。

extern crate joinery;

use std::env;

// Or use joinery::prelude::*;
use joinery::Joinable;

fn main() {
	// Join things!
	println!("{}", ["Hello", "World!"].iter().join_with(", "));

	// Join things of different types!
	println!("{}", ["Hello", "World!"].iter().join_with(' '));
	println!("{}", (0..10).join_with(' '));
}

安装

将 joinery 添加到您的 Cargo.toml

[dependencies]
joinery = "2.0.0"

仅夜间功能

joinery 支持各种仅限夜间的优化功能,例如 iter::TrustedLen。这些功能通过 "nightly" cargo 功能启用

[dependencies.joinery]
version = "2.0.0"
features = ["nightly"]

请注意,由于夜间功能是不稳定的,joinery 无法对它们在版本之间的持续存在或接口一致性做出任何稳定性保证。虽然我们会尽力保持兼容性,但我们只保证非夜间接口的 semver 兼容性。

概述

Joinery 提供了迭代器的连接功能。简单来说,连接是一个迭代器和分隔符的组合。连接在概念上表示迭代器的所有元素,每个元素之间用分隔符分隔。

您可以使用 join_with 方法创建连接,该方法通过 Joinable 特性定义了所有 IntoIterator 类型

use joinery::prelude::*;

let content = vec![1, 2, 3, 4, 5];

let join = content.iter().join_with(", ");

连接实现 Display,因此可以将它们写入到写入器或转换为字符串。连接是无状态的,因此可以重用,前提是底层迭代器是可克隆的

println!("Comma-separated numbers: {}", join);

let mut result = String::new();
write!(&mut result, "{}", join);

// Don't forget that `Display` gives you `ToString` for free!
let result2 = join.to_string();

连接也是可迭代的。您可以使用 .iter() 来迭代底层迭代器的引用,或者使用 into_iter() 将连接转换为迭代器。连接迭代器使用一个名为 JoinItem 的项目类型,它区分了分隔符和底层迭代器的元素。

use joinery::JoinItem;
let mut iter = join.iter();

assert_eq!(iter.next(), Some(JoinItem::Element(&1)));
assert_eq!(iter.next(), Some(JoinItem::Separator(&", ")));
assert_eq!(iter.next(), Some(JoinItem::Element(&2)));
assert_eq!(iter.next(), Some(JoinItem::Separator(&", ")));
assert_eq!(iter.next(), Some(JoinItem::Element(&3)));

依赖项