1个不稳定版本
0.1.0 | 2018年10月8日 |
---|
#1004在嵌入式开发
2KB
使用const-fn作为配置媒介的演示
这里的内容
- 嵌入式设备通常需要对其库进行很多调整,以调整驱动程序的行为以适应特定用例
- 这在像缓冲区大小这样的东西中很常见,有时候512字节足够,但有时候需要4K
- Cargo的
cfg
功能标志是二进制的,并且充当联合体,因此很难通过功能标志提供编译时设置,特别是非二进制的,如大小参数 min_const_fn
刚刚稳定,并将及时在1.31
这个演示是使用const fn
来调整库的编译时设置的一个PoC,而不是仅仅依赖于cfg
功能。
本演示的各个部分
mcf-config-demo-lib
- 一个示例库,发布在crates.io上mcf-config-demo-settings
- 一个库crate,发布在crates.io上,包含默认设置mcf-config-demo-app
- 一个二进制crate,消费上面的库(未发布在crates.io上)mcf-config-demo-override
-mcf-config-demo-settings
的副本,但某些配置项已更改
查看演示如何工作
$ cd mcf-config-demo-app
$ cargo run
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/mcf-config-demo-app`
000: 0xac
001: 0xac
002: 0xac
003: 0xac
004: 0xac
005: 0xac
006: 0xac
007: 0xac
Hello, world!
# uncomment the lines from Cargo.toml in the app folder
nano Cargo.toml
# ...
cargo run
cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
Running `target/debug/mcf-config-demo-app`
000: 0xac
001: 0xac
002: 0xac
003: 0xac
004: 0xac
005: 0xac
006: 0xac
007: 0xac
008: 0xac
009: 0xac
010: 0xac
011: 0xac
012: 0xac
013: 0xac
014: 0xac
015: 0xac
y halo thar!
许可证
根据您的选择,许可为以下之一
-
Apache许可证版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
-
MIT许可证 (LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的任何旨在包含在作品中的贡献,都应按上述方式双重许可,不附加任何额外条款或条件。