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日

#920 in Rust模式

Download history 1436/week @ 2024-03-14 1541/week @ 2024-03-21 1453/week @ 2024-03-28 1733/week @ 2024-04-04 1084/week @ 2024-04-11 1233/week @ 2024-04-18 1182/week @ 2024-04-25 2031/week @ 2024-05-02 1287/week @ 2024-05-09 1190/week @ 2024-05-16 968/week @ 2024-05-23 1139/week @ 2024-05-30 1158/week @ 2024-06-06 930/week @ 2024-06-13 1123/week @ 2024-06-20 875/week @ 2024-06-27

4,248 每月下载量
6 个包中使用 (通过 fixed-macro)

MIT/Apache

105KB
1K SLoC

fixed-macro

Build Latest Version Documentation Apache 2.0 MIT

此库提供了fixed!,这是一个proc-macro,它允许轻松地为在fixed包中提供的所有定点类型创建定点常量。

[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本身相同的整型和浮点字面量的语法,包括下划线和科学记数法)

    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::typesfixed_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 license
除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交以包含在此包中的任何贡献,将按上述方式双重许可,不附加任何额外条款或条件。

lib.rs:

允许为每个可用的定点类型创建常量的宏。

依赖关系

~4MB
~81K SLoC