7 个版本
0.2.1 | 2021年10月4日 |
---|---|
0.2.0 | 2021年9月10日 |
0.1.4 | 2021年10月4日 |
0.1.3 | 2021年9月4日 |
0.1.0 | 2021年4月27日 |
#16 in 解析器工具
6,403,450 每月下载量
用于 10,665 个包 (2 个直接使用)
200KB
3.5K SLoC
minimal-lexical
这是 rust-lexical 的一个最小版本,旨在允许高效的浮点解析往返。minimal-lexical 实现了一个正确且快速的浮点解析器。
由于 minimal-lexical 的体积小且稳定,它也很好地适应了私有分支。如果您私有地分支 minimal-lexical,我建议您通过 电子邮件 或 Twitter 联系我,这样我可以通知您功能更新、错误修复或安全漏洞,以及帮助您实现自定义功能请求。我不会将您的信息用于任何其他目的,包括但不限于披露您的项目或组织对 minimal-lexical 的使用。
minimal-lexical 设计用于快速编译时间和小的二进制文件大小,但牺牲了一点点性能。为了提高性能,您可以随意以更激进的内联方式分支 minimal-lexical。
类似项目
对于高级、一揽子的数字转换例程,请参阅 rust-lexical。
目录
入门
首先,将以下内容添加到您的 Cargo.toml
。
[dependencies]
minimal-lexical = "0.2"
接下来,要解析一个简单的浮点数,请使用以下内容
extern crate minimal_lexical;
// Let's say we want to parse "1.2345".
// First, we need an external parser to extract the integer digits ("1"),
// the fraction digits ("2345"), and then parse the exponent to a 32-bit
// integer (0).
// Warning:
// --------
// Please note that leading zeros must be trimmed from the integer,
// and trailing zeros must be trimmed from the fraction. This cannot
// be handled by minimal-lexical, since we accept iterators
let integer = b"1";
let fraction = b"2345";
let float: f64 = minimal_lexical::parse_float(integer.iter(), fraction.iter(), 0);
println!("float={:?}", float); // 1.235
食谱
您可能会问:实际的解析器在哪里?由于浮点格式的不一致,以及将集成各种数据交换语言解析器实用程序的目标,这种功能将超出本库的范围。
例如,以下浮点数在 Rust 字符串中是有效的,但在 JSON 或 TOML 中是无效的
1.e7
因此,要使用本库,您需要能够提取有效数字并传递给 create_float
的功能。请参阅 简单示例,了解如何将 minimal-lexical 作为解析器使用。
算法
有关 minimal-lexical 使用的算法的详细说明,请参阅 lexical-core#string-to-float。
平台支持
minimal-lexical 在包括大端和小端系统在内的各种平台上进行了测试,以确保代码的可移植性。支持的架构包括
- x86_64 Linux、Windows、macOS、Android、iOS、FreeBSD 和 NetBSD。
- x86 Linux、macOS、Android、iOS 和 FreeBSD。
- aarch64 (ARM8v8-A) Linux、Android 和 iOS。
- armv7 (ARMv7-A) Linux、Android 和 iOS。
- ARM (ARMv6) Linux和Android。
- MIPS (MIPS) Linux。
- mipsel (MIPS LE) Linux。
- mips64 (MIPS64 BE) Linux。
- mips64el (MIPS64 LE) Linux。
- powerpc (PowerPC) Linux。
- powerpc64 (PPC64) Linux。
- powerpc64le (PPC64LE) Linux。
- s390x (IBM Z) Linux。
Minimal-lexical也应在各种其他架构和指令集架构(ISA)上正常工作。如果您在任意架构上编译Minimal-lexical时遇到任何问题,请提交错误报告。
最低版本支持
Minimal-lexical经过测试,支持Rustc 1.36+,包括稳定版、测试版和夜间版。如果您在兼容的Rustc版本上编译支持的词法版本时遇到任何错误,请报告。请注意,我们可能会为18个月前的编译器版本增加MSRV,以支持至少当前的Debian稳定版本,而不会造成破坏性更改。
变更日志
所有更改均在CHANGELOG中进行记录。
许可
Minimal-lexical同时采用Apache 2.0许可协议和MIT许可协议进行双重许可。有关完整许可协议详情,请参阅LICENSE.md文件。
贡献
除非您明确说明,否则您提交给Minimal-lexical作为Apache-2.0许可协议定义的故意贡献,应按上述方式双重许可,而不附加任何额外条款或条件。