1个不稳定版本

0.1.0 2018年10月8日

#1004嵌入式开发


用于mcf-config-demo-lib

MIT许可证

2KB

使用const-fn作为配置媒介的演示

这里的内容

  • 嵌入式设备通常需要对其库进行很多调整,以调整驱动程序的行为以适应特定用例
    • 这在像缓冲区大小这样的东西中很常见,有时候512字节足够,但有时候需要4K
  • Cargo的cfg功能标志是二进制的,并且充当联合体,因此很难通过功能标志提供编译时设置,特别是非二进制的,如大小参数
  • min_const_fn刚刚稳定,并将及时在1.31

这个演示是使用const fn来调整库的编译时设置的一个PoC,而不是仅仅依赖于cfg功能。

本演示的各个部分

  1. mcf-config-demo-lib - 一个示例库,发布在crates.io上
  2. mcf-config-demo-settings - 一个库crate,发布在crates.io上,包含默认设置
  3. mcf-config-demo-app - 一个二进制crate,消费上面的库(未发布在crates.io上)
  4. 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许可证定义的任何旨在包含在作品中的贡献,都应按上述方式双重许可,不附加任何额外条款或条件。

无运行时依赖项