#字符串格式化 #填充 #特性 # #符号 #数据 #

padder

针对 Rust 的高效数据和字符串格式化库

5 个版本 (3 个稳定版)

1.2.0 2024 年 5 月 9 日
1.1.0 2024 年 5 月 5 日
1.0.0 2023 年 12 月 19 日
0.1.1 2023 年 12 月 14 日
0.1.0 2023 年 12 月 14 日

#3 in #three

每月 33 次下载
用于 evolution

自定义许可证

65KB
1.5K SLoC



License: MIT Crates.io (latest) codecov CI CD Tests

⚡️针对 Rust 的高效数据和字符串格式化库。

🔎 概述

以最小的内存开销高效地填充和格式化几乎任何泛型切片或向量。这个包在性能上优于标准库的 format! 宏。克隆此仓库并运行 cargo bench 以查看此实现与标准库之间的基准比较。

库定义了一个核心特性 Source,它可以在类型上实现高效的填充。它目前实现了三种主要的数据结构类型:字符串切片 &str、泛型切片 &[T] 和泛型向量 Vec<T>。注意类型 T 必须遵守特性约束 T: From<Symbol>,其中 Symbol 是表示可用字符/符号的枚举。如果您想用您自己的类型 T 扩展 Source 特性的填充功能,那么您还需要为您的类型 T 实现特性 From<Symbol>。请参阅实现示例,链接

📦 安装

padder 包含到您自己的包中最简单的方法是使用 Cargo 包管理器。

$ cargo add padder

或者,您可以通过克隆此仓库并使用 Cargo 编译来从源代码构建,然后将库链接到您的项目。

$ git clone https://github.com/firelink-data/padder.git
$ cd padder
$ cargo build --release

🚀 示例

padder 添加到您的包依赖项将使 Source 特性在作用域内,并允许填充。

例如,您可以非常容易地以以下方式填充字符串切片

let padded: String = "cool".pad(10, Alignment::Center, Symbol::Zero);

这将生成填充后的字符串 000cool000。您还可以填充到一个已经分配的缓冲区中,从而完全控制任何堆分配,如下所示

let width: usize = 8;
let mut output: Vec<u8> = Vec::with_capacity(width);
let original = vec![13u8, 9, 128, 81];
original.pad_and_push_to_buffer(width, Alignment::Right, Symbol::Whitespace, output);

还提供了两个简单的包装方法,分别称为 padpad_and_push_to_buffer,只要实现了 Source trait,就可以在任意类型上进行填充。例如,您可以使用这些函数如下所示

// pad
let original: &str = "hej";
let width: usize = 9;
let output: String = pad(original, width, Alignment::Left, Symbol::Hyphen);

// pad_and_push_to_buffer
let buffer = String::with_capacity(11);
pad_and_push_to_buffer("testcool", 11, Alignment::Right, Symbol::Whitespace);

这将生成字符串 hej------ testcool

📋 许可证

所有代码均在通用MIT许可证下,请参阅 LICENSE 获取具体信息。

依赖项

~225–570KB
~11K SLoC