12个版本 (6个稳定版)
1.3.0 | 2023年7月31日 |
---|---|
1.2.3 | 2023年7月24日 |
0.1.0-beta6 | 2023年7月13日 |
0.1.0-beta2 | 2023年6月26日 |
#182 in 文本处理
9,896 每月下载量
用于 3 crates
115KB
586 行
关于
Bwrap是一个快速、轻量级、嵌入式环境友好的文本包装库。虽然Bwrap在包装文本方面提供了极大的灵活性,但资源消耗和性能都不会妥协
-
默认情况下不会发生堆分配。
-
默认的时间/空间复杂度是 O(n),如果有追加/前置,则是 O(n(p+a))。(n、p、a 分别是输入字节数、前置字节和追加字节的数量)
为了可读性,我们(b)更好地(包装)我们的文本。
基准测试
以下是在不同维度上几个文本包装库的性能比较
时间
内存
注意
-
基准测试是可复制的,有关基准样本或方法的具体细节请参阅 bench-wrap-libs。
-
以上数据是在i5-3337u/8G机器上获得的,仅供参考。在不同的机器或不同的空闲系统资源下,可能会有略微不同的结果。
特性
use_std
:使用Rust标准库(libstd)进行自动内存管理。
示例(use_std
特性)
多语言支持
Bwrap支持多种语言,它将语言分为两类:空格敏感型和空格不敏感型。前者适用于依赖于ASCII空格来分隔单词的语言,如英语、乌克兰语、希腊语等。后者适用于对空格不敏感的语言,如中文、日语、泰语等。
英语、乌克兰语、希腊语等
-
英语
原文
one two three four five six seven eight nine ten one two three four five six seven eight nine ten one two three four five six seven eight nine ten
包装后:
one two three four five six seven eight nine ten one two three four five six seven eight nine ten one two three four five six seven eight nine ten
源代码
let line = "one two three four five six seven eight nine ten one two three four five six seven eight nine ten one two three four five six seven eight nine ten"; println!("ORIGINAL:\n\n{}\n", line); println!("WRAPPED:\n\n{}", bwrap::wrap!(line, 50));
-
乌克兰语
原文
один два три чотири п'ять шість сім вісім дев'ять десять один два три чотири п'ять шість сім вісім дев'ять десять один два три чотири п'ять шість сім вісім дев'ять десять
包装后:
один два три чотири п'ять шість сім вісім дев'ять десять один два три чотири п'ять шість сім вісім дев'ять десять один два три чотири п'ять шість сім вісім дев'ять десять
源代码
let line = "один два три чотири п'ять шість сім вісім дев'ять десять один два три чотири п'ять шість сім вісім дев'ять десять один два три чотири п'ять шість сім вісім дев'ять десять"; println!("ORIGINAL:\n\n{}\n", line); println!("WRAPPED:\n\n{}", bwrap::wrap!(line, 60));
-
希腊语
原文
ένα δύο τρία τέσσερα πέντε έξι επτά οκτώ εννέα δέκα ένα δύο τρία τέσσερα πέντε έξι επτά οκτώ εννέα δέκα ένα δύο τρία τέσσερα πέντε έξι επτά οκτώ εννέα δέκα
包装后:
ένα δύο τρία τέσσερα πέντε έξι επτά οκτώ εννέα δέκα ένα δύο τρία τέσσερα πέντε έξι επτά οκτώ εννέα δέκα ένα δύο τρία τέσσερα πέντε έξι επτά οκτώ εννέα δέκα
源代码
let line = "ένα δύο τρία τέσσερα πέντε έξι επτά οκτώ εννέα δέκα ένα δύο τρία τέσσερα πέντε έξι επτά οκτώ εννέα δέκα ένα δύο τρία τέσσερα πέντε έξι επτά οκτώ εννέα δέκα"; println!("ORIGINAL:\n\n{}\n", line); println!("WRAPPED:\n\n{}", bwrap::wrap!(line, 51));
中文、日语、泰语等
-
中文
原文
一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十
包装后:
一二三四五六七八九十 一二三四五六七八九十 一二三四五六七八九十
源代码
let line = "一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十"; println!("ORIGINAL:\n\n{}\n", line); println!("WRAPPED:\n\n{}", bwrap::wrap_maybrk!(line, 20));
-
日语
原文
ありがとうございますありがとうございますありがとうございます
包装后:
ありがとうございます ありがとうございます ありがとうございます
源代码
let line = "ありがとうございますありがとうございますありがとうございます"; println!("ORIGINAL:\n\n{}\n", line); println!("WRAPPED:\n\n{}", bwrap::wrap_maybrk!(line, 20));
-
泰语
原文
หนึ่งสองสามสี่ห้าหกเจ็ดแปดเก้าสิบหนึ่งสองสามสี่ห้าหกเจ็ดแปดเก้าสิบหนึ่งสองสามสี่ห้าหกเจ็ดแปดเก้าสิบ
包装后:
หนึ่งสองสามสี่ห้าหกเจ็ดแปดเก้าสิบ หนึ่งสองสามสี่ห้าหกเจ็ดแปดเก้าสิบ หนึ่งสองสามสี่ห้าหกเจ็ดแปดเก้าสิบ
源代码
let line = "หนึ่งสองสามสี่ห้าหกเจ็ดแปดเก้าสิบหนึ่งสองสามสี่ห้าหกเจ็ดแปดเก้าสิบหนึ่งสองสามสี่ห้าหกเจ็ดแปดเก้าสิบ"; println!("ORIGINAL:\n\n{}\n", line); println!("WRAPPED:\n\n{}", bwrap::wrap_maybrk!(line, 25));
追加/前置
Bwrap可以追加或前置任意字符串到新添加的换行符中。通过这个特性,可以实现缩进、行尾标记等功能。
缩进
原文
Here is our schedule:
- Do A, and do B, and do C, and do D, and do E, and do F
- Do G, and do H, and do I, and do J, and do K, and do L
包装后:
Here is our schedule:
- Do A, and do B, and do C, and do
D, and do E, and do F
- Do G, and do H, and do I, and do
J, and do K, and do L
源代码
let line = "Here is our schedule:\n- Do A, and do B, and do C, and do D, and do E, and do F\n- Do G, and do H, and do I, and do J, and do K, and do L";
println!("ORIGINAL:\n\n{}\n", line);
println!("WRAPPED:\n\n{}", bwrap::wrap_nobrk!(line, 35, " "));
尾随标记
原文
VGhpcyBpcyBhIHNlY3JldCBtZXNzYWdlLCBwbGVhc2UgZGVsZXRlIGFmdGVyIHJlYWQK
包装后:
VGhpcyBpcy |
BhIHNlY3Jl |
dCBtZXNzYW |
dlLCBwbGVh |
c2UgZGVsZX |
RlIGFmdGVy |
IHJlYWQK
源代码
let line = "VGhpcyBpcyBhIHNlY3JldCBtZXNzYWdlLCBwbGVhc2UgZGVsZXRlIGFmdGVyIHJlYWQK";
println!("ORIGINAL:\n\n{}\n", line);
println!("WRAPPED:\n\n{}", bwrap::wrap_maybrk!(line, 10, " |"));
许可
Bwrap 可以根据接受者的选择,采用以下任一许可证进行授权:MIT 许可证 或 GNU 通用公共许可证第 3.0 版。
依赖关系
~375KB