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

Download history 1544/week @ 2024-03-17 1551/week @ 2024-03-24 1631/week @ 2024-03-31 1527/week @ 2024-04-07 1131/week @ 2024-04-14 1297/week @ 2024-04-21 1231/week @ 2024-04-28 2012/week @ 2024-05-05 1230/week @ 2024-05-12 1121/week @ 2024-05-19 960/week @ 2024-05-26 1203/week @ 2024-06-02 1183/week @ 2024-06-09 935/week @ 2024-06-16 1089/week @ 2024-06-23 478/week @ 2024-06-30

每月下载量 3,736
7 crate 中使用 (直接使用 2 个)

MIT/Apache

26KB
415 行代码 (不包括注释)

fixed-macro

Build Latest Version Documentation Apache 2.0 MIT

该库提供了 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.0MIT许可证进行许可。
除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交以包含在此软件包中的任何贡献,都将按上述方式双许可,不附加任何额外条款或条件。

依赖项

~4MB
~81K SLoC