4 个稳定版本
1.2.0 | 2022年10月16日 |
---|---|
1.1.1 | 2020年10月21日 |
1.1.0 | 2020年10月19日 |
1.0.0 | 2020年10月18日 |
在 #fixed-point 中排名第 59
每月下载量 3,736
在 7 个 crate 中使用 (直接使用 2 个)
26KB
415 行代码 (不包括注释)
fixed-macro
该库提供了 fixed!
,这是一个过程宏,允许轻松创建所有 fixed
crate 中提供的定点类型的定点常量。
[dependencies]
fixed-macro = "1.1"
编译器支持:rustc 1.61+。
详细信息
-
宏的语法如下
fixed!(<value>: <type>)
其中
<value>
是一个整型字面量或浮点字面量,而<type>
的形式为I<i>F<f>
或U<i>F<f>
,与fixed::types
中提供的一个类型别名匹配。特别注意的是,<value>
必须是一个字面量,而不是任意的算术表达式,并且<type>
被视为一个特殊标识符,因此不需要先导入。 -
创建一个在编译时解析的定点常量(支持与Rust自身相同的int和float字面量语法,包括下划线和科学计数法)
use fixed_macro::fixed; use fixed::types::U8F8; let x1 = fixed!(-1.23: I32F32); // float literal (note, the type is not in scope) const X2: U8F8 = fixed!(1.2: U8F8); // can be used to initialize const values let x3 = fixed!(123: U8F8); // decimal integers work as well let x4 = fixed!(0x7B: U8F8); // and hex/oct/bin integers too let x5 = fixed!(1_234.567_890: I32F32); // underscores are ignored, same as in rustc let x7 = fixed!(0.12e+01: U8F8); // scientific notation is also supported
-
对于来自
fixed::types
的每个类型别名,fixed_macro::types
中都有一个同名的宏,您可以使用它而无需指定类型名称use fixed_macro::types::I16F48; let a1 = I16F48!(-1.23);
宏和类型可以愉快地在同一个作用域中共存
use fixed::types::I16F48; use fixed_macro::types::I16F48; const B1: I16F48 = I16F48!(1.23e-2);
您可以选择在不同的(或相同的)用户定义名称下导入它们
use fixed::types::{I16F48 as Decimal}; use fixed_macro::types::{I16F48 as dec}; let c1 = dec!(12_345); const C2: Decimal = dec!(-0.123_456);
许可证
您可以选择根据Apache License, Version 2.0或MIT许可证进行许可。除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交以包含在此软件包中的任何贡献,都将按上述方式双许可,不附加任何额外条款或条件。
依赖项
~4MB
~81K SLoC