1个不稳定版本
0.1.0 | 2023年5月14日 |
---|
#854 in 嵌入式开发
9KB
platform-switch
用于在平台之间切换的命名空间门面。
动机
有时代码需要在受限制的平台(如嵌入式系统)和具有更全面环境的目标之间共享。此crate提供了一系列模块包装器,可以与Cargo清单功能定义结合使用,以在编译时切换选项。
示例
在嵌入式系统上使用thiserror
和启用了defmt
[features]
default = ["std"]
std = ["platform-switch/std_error"]
mcu = ["platform-switch/core_error", "platform-switch/defmt"] # Requires nightly
use platform_switch::log as log;
use platform_switch::thiserror as thiserror;
#[derive(thiserror::Error, Debug)]
enum ExampleError {
#[error("Error #1")]
Error1,
#[error("Error #2")]
Error2,
}
fn error_logger() {
log::trace!("Trace");
log::debug!("Debug");
log::info!("Info");
log::warn!("Warn");
log::error!("Error");
log::error!("Error: {}", ExampleError::Error1);
log::error!("Error: {}", ExampleError::Error2);
}
稳定工具链
如果需要稳定工具链,可以使用以下特性和属性禁用thiserror
[features]
default = ["std"]
std = ["thiserror", "platform-switch/std_error"]
mcu = ["platform-switch/defmt"]
thiserror = []
use platform_switch::log as log;
use platform_switch::thiserror as thiserror;
#[derive(Debug)]
#[cfg_attr(feature = "thiserror", derive(thiserror::Error))]
enum ExampleError {
#[cfg_attr(feature = "thiserror", error("Error #1"))]
Error1,
#[cfg_attr(feature = "thiserror", error("Error #2"))]
Error2,
}
许可证
依赖关系
~48–260KB