1 个不稳定版本

0.1.0 2018年10月8日

#932嵌入式开发

MIT 许可证

4KB

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

相关代码片段

  • 嵌入式设备通常需要对其库进行许多调整,以便将驱动程序的行为调整到特定用例
    • 这通常见于缓冲区大小等问题,有时512字节就足够,但有时需要4K
  • Cargo 的 cfg 功能标志是二进制的,并作为联合体使用,因此很难通过功能标志提供编译时设置,尤其是非二进制的如大小参数等
  • min_const_fn 刚刚稳定,并将及时更新到 1.31

这个演示是使用 const fn 调整库的编译时设置的一个概念证明,而不是仅仅依赖于 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 许可证中定义,应如上双许可,不附加任何额外条款或条件。

依赖关系