#lcm #deserialize #data #generation #specification #generate #specifically

rust-lcm-codegen

从LCM类型规范生成Rust反/序列化代码

2个版本

0.2.1 2020年6月19日
0.2.0 2020年2月12日

#1814 in 解析器实现

Apache-2.0

85KB
1.5K SLoC

rust-lcm-codegen

LCM类型规范文件生成Rust反/序列化代码。

概览

这是rust-lcm-codec的一个子项目,专门处理代码生成,为LCM编码数据提供了Rust API。它旨在从Cargo build.rs脚本中使用。

入门

此库需要Rust工具链。Rust中推荐的工具链管理系统是rustup

一旦安装了rustup,您可以使用以下命令为本地设备构建

cargo build

用法

将以下依赖项添加到您的Rust项目的Cargo.toml

[build-dependencies]
rust-lcm-codegen = "0.1.0"

在您的Rust项目的build.rs文件中导入rust-lcm-codegen:generate,并将generate函数指向您的.lcm模式以及生成代码的所需输出位置

use rust_lcm_codegen::generate;
use std::env;
use std::fs::File;
use std::io::Read;
use std::path::Path;

fn main() {
    println!("cargo:rerun-if-changed=../schemas");
    println!("cargo:rerun-if-changed=../../src");
    println!("cargo:rerun-if-changed=../../../rust-lcm-codegen");

    let schema_files = vec![
        "./schemas/example_schema_a.lcm",
        "path/to/schemas/example_schema_b.lcm",
    ];
    let out_dir = env::var("OUT_DIR").expect("OUT_DIR");
    let out_path = Path::join(Path::new(&out_dir), "generated_lcm.rs");
    generate(schema_files, &out_path);
}

测试

要为此项目运行测试,请确保您位于/rust-lcm-codec/rust-lcm-codegen,然后运行

cargo test

许可证

有关更多详细信息,请参阅LICENSE

版权所有 2020 Auxon Corporation

根据Apache许可证版本2.0(“许可证”)授权;除非遵守许可证,否则不得使用此文件。您可以在以下位置获得许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则根据许可证分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证的具体语言、权限和限制,请参阅许可证。

依赖项

~1MB
~19K SLoC