#braces #expansion #shell

brace-expand

Rust 包,用于字符串的大括号展开,类似于Bash等shell的使用

1 个不稳定版本

0.1.0 2021年10月7日

1441 in 算法

MIT 许可证

11KB
133

Rust 的大括号展开包

Test results Crates.io Documentation

此库执行字符串的大括号展开,与Bash等shell中使用的类似(虽然在几个细节上不同)。

算法的功能

给定输入

{hello,goodbye,wonderful} world

此算法产生以下字符串集合

hello world
goodbye world
wonderful world

请注意,与shell大括号展开不同,结果是单独的字符串集合,而不是单个字符串。此外,算法不特别处理空白字符;它们与打印字符处于同等地位。

大括号 {} 用于标记展开列表的开始和结束,逗号分隔列表中的每个项目。字面量的大括号和逗号必须用单个反斜杠转义

this is {\{braced\},[bracketed\, nicely]}

产生

this is {braced}
this is [bracketed, nicely]

如果您需要字面量反斜杠,也必须进行转义

this is a backslash: \\

产生

this is a backslash: \

请注意,转义的反斜杠将从输出中删除。

输入可以包含多个展开列表,并且它们可以嵌套。例如

{hello,goodbye} {world,my {friends,colleagues}}

产生

hello world
goodbye world
hello my friends
hello my colleagues
goodbye my friends
goodbye my colleagues

示例

use brace_expand::brace_expand;

fn main() {
    let output = brace_expand("this {is,is not} a pipe"); 

    assert_eq!(output, vec!["this is a pipe", "this is not a pipe"]);
}

无运行时依赖