• Gary Guo's avatar
    rust: build_assert: add `build_{error,assert}!` macros · 0f595bab
    Gary Guo authored
    Add the `build_error!` and `build_assert!` macros which leverage
    the previously introduced `build_error` crate. Do so in a new
    module, called `build_assert`.
    
    The former fails the build if the code path calling it can possibly
    be executed. The latter asserts that a boolean expression is `true`
    at compile time.
    
    In particular, `build_assert!` can be used in some contexts where
    `static_assert!` cannot:
    
        fn f1<const N: usize>() {
            static_assert!(N > 1);` // Error.
            build_assert!(N > 1);   // Build-time check.
            assert!(N > 1);         // Run-time check.
        }
    
        #[inline]
        fn f2(n: usize) {
            static_assert!(n > 1);  // Error.
            build_assert!(n > 1);   // Build-time check.
            assert!(n > 1);         // Run-time check.
        }
    Signed-off-by: default avatarGary Guo <gary@garyguo.net>
    Reviewed-by: default avatarWei Liu <wei.liu@kernel.org>
    [Reworded, adapted for upstream and applied latest changes]
    Signed-off-by: default avatarMiguel Ojeda <ojeda@kernel.org>
    0f595bab
prelude.rs 616 Bytes