1 个不稳定版本
0.1.0 | 2018年10月8日 |
---|
#932 在 嵌入式开发
4KB
使用 const-fn 作为配置媒介的演示
相关代码片段
- 嵌入式设备通常需要对其库进行许多调整,以便将驱动程序的行为调整到特定用例
- 这通常见于缓冲区大小等问题,有时512字节就足够,但有时需要4K
- Cargo 的
cfg
功能标志是二进制的,并作为联合体使用,因此很难通过功能标志提供编译时设置,尤其是非二进制的如大小参数等 min_const_fn
刚刚稳定,并将及时更新到1.31
这个演示是使用 const fn
调整库的编译时设置的一个概念证明,而不是仅仅依赖于 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 License, Version 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
-
MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,如 Apache-2.0 许可证中定义,应如上双许可,不附加任何额外条款或条件。