rust: add `build_error` crate
authorGary Guo <gary@garyguo.net>
Thu, 10 Nov 2022 16:41:37 +0000 (17:41 +0100)
committerMiguel Ojeda <ojeda@kernel.org>
Sun, 4 Dec 2022 00:59:16 +0000 (01:59 +0100)
commitecaa6ddff2fd843c0236a931bcc62bf239956617
treee7a1b32960bd4ec652dd2e8dc34e60e9d62d289d
parentef9e37973c3a50497c943e70d577dad10a8e41f2
rust: add `build_error` crate

The `build_error` crate provides a function `build_error` which
will panic at compile-time if executed in const context and,
by default, will cause a build error if not executed at compile
time and the optimizer does not optimise away the call.

The `CONFIG_RUST_BUILD_ASSERT_ALLOW` kernel option allows to
relax the default build failure and convert it to a runtime
check. If the runtime check fails, `panic!` will be called.

Its functionality will be exposed to users as a couple macros in
the `kernel` crate in the following patch, thus some documentation
here refers to them for simplicity.

Signed-off-by: Gary Guo <gary@garyguo.net>
Reviewed-by: Wei Liu <wei.liu@kernel.org>
[Reworded, adapted for upstream and applied latest changes]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
lib/Kconfig.debug
rust/Makefile
rust/build_error.rs [new file with mode: 0644]
rust/exports.c
scripts/generate_rust_analyzer.py