如何在Rust中使用正则表达式而不使用Cargo?

7

我正在用Rust编写一些小脚本。这些脚本可以通过以下命令运行:

$ rustc dosomething.rs && ./dosomething

这些工具很好用。但是,我遇到了需要使用正则表达式的情况。我开始脚本时加入了extern crate regex;。看起来这意味着我需要通过Cargo运行我的脚本。我唯一成功运行带有正则表达式的小脚本的方法是将其强制放在自己的目录中,并按照以下结构组织:

.
├── Cargo.toml
└── src
    └── main.rs

我在Cargo.toml文件中加载了以下内容:

[package]
name = "wordcount"
version = "0.0.1"

[dependencies]
regex = "0.1"

我按照要求输入 cargo build 命令并成功运行了可执行文件。

然而,当计算 Cargo 产物所占用的磁盘空间时,我发现它们由17个文件、21个目录和23兆字节组成。

当运行大型应用程序时,这是完全正常的;我曾经看到过小型Java应用程序,其中Maven下载了如此多的jar包,以至于23M是微不足道的。

我只是想知道在Rust中是否有其他使用正则表达式的方法。(是的,我想要使用正则表达式,因为使用\pL非常容易。)

Rust中是否内置支持正则表达式或者有一些方法可以将我的单词计数脚本保存在与其他脚本相同的目录中?是否有类似于-L标志的模拟品呢?


2
我认为你的意思是问题不在于Cargo,而在于Regex crate及其依赖项的组合大小。我能想到的唯一替代方案是使用ffi包装C/C++正则表达式引擎(例如pcre),并且不计算其大小,假设它已经安装好了。 - Chris Emerson
您可以使单个Cargo项目编译多个二进制文件,这在技术上满足了将所有内容保留在同一目录中的要求。您还可以通过在Cargo.toml中显式设置源路径来消除src目录本身。 - BurntSushi5
1
你可以不使用Cargo而直接使用正则表达式库,但是你需要重复所有Cargo为你完成的工作。例如,正则表达式库有几个依赖项,你也需要安装它们。 - BurntSushi5
没错,这里真的没有问题。我知道Rust更多地是一种企业或系统语言,而不是脚本语言,只是在尝试一些东西。我甚至可以接受可执行文件的大小和依赖项,因为任何类型的构建系统都会生成快速、本地化的可执行文件,并具有庞大的生态系统。我当然不会责怪Rust,在想知道是否可以使用-L构建可执行文件,而不受Cargo的有偏见的源目录结构的限制。我认为多二进制货物项目是最好的选择。 - Ray Toal
1个回答

2
这段文字的英译中:

Rust 中有内置正则表达式支持吗?

没有,但是 regex crate 可能会成为 Rust 的标准(不在 std 中?)正则表达式库。

还有什么办法可以让我的字数统计脚本和其他脚本放在同一个目录下吗?

Cargo 项目可以有 多个 可执行文件。只需将每个主文件放在 src/bin 中即可。


啊,我不知道有多个二进制项目! - Ray Toal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接