[][src]Macro fixed::const_fixed_from_int

macro_rules! const_fixed_from_int {
    ($(const $NAME:ident: $Fixed:ty = $int:expr;)*) => { ... };
}

Defines constant fixed-point numbers from integer expressions.

This macro is useful because from_num cannot be used in constant expressions.

Examples

use fixed::{const_fixed_from_int, types::I16F16};
const_fixed_from_int! {
    // define a constant using an integer
    const FIVE: I16F16 = 5;
    // define a constant using an integer expression
    const SUM: I16F16 = 3 + 2;
}
assert_eq!(FIVE, 5);
assert_eq!(SUM, 5);

The following would fail to compile because i32::MAX is not representable by I16F16.

This example deliberately fails to compile
use fixed::{const_fixed_from_int, types::I16F16};
const_fixed_from_int! {
    // fails because i32::MAX > I16F16::MAX
    const _OVERFLOW: I16F16 = i32::MAX;
}

The following would fail to compile because I16F16 is an alias for FixedI32<U32>, and this macro can define FixedI32 constants using i32 expressions, not i16 expressions.

This example deliberately fails to compile
use fixed::{const_fixed_from_int, types::I16F16};
const_fixed_from_int! {
    // fails because 0i16 is not of type i32
    const _MISMATCH: I16F16 = 0i16;
}