#cargo-build #build #cargo #compile #ide

seacan

一个用于与 cargo 交互以构建东西的库

2 个不稳定版本

0.1.0 2021 年 5 月 18 日
0.0.1 2021 年 5 月 17 日

#1981 in 开发工具


用于 cargo-rr

MIT 许可证

48KB
1K SLoC

seacan

Version 0.1.0 License MIT

一个用于与 cargo 交互以构建东西的库。

主要入口点是 bin::Compilertest::Compiler

二进制文件和示例

构建二进制文件和示例相对简单,尽管在某些情况下我们使用正则表达式来为您提供更友好的错误。

use seacan::bin;
let binary_artifact = bin::Compiler::bin("binary_name").release(true).compile()?;
let example_artifact = bin::Compiler::example("example_name").compile()?;

示例返回值

Ok(ExecutableArtifact {
    package_id: PackageId { .. },
    target: Target { .. },
    profile: ArtifactProfile { .. },
    features: [],
    filenames: [ .. ],
    executable: "/path/to/crate/.target/debug/example_name",
    fresh: true,
})

测试

构建测试稍微复杂一些。我们公开了 Cargo 的所有 API,用于指定要构建哪些测试工件。在构建每个工件后,我们要求它提供所有匹配您提供的规范的测试或基准函数的列表。

use seacan::test;
let mut artifacts = test::Compiler::new(
    test::NameSpec::exact("test_frobs_baz"),
    test::TypeSpec::integration("frob_*"),
).compile()?;

示例返回值

Ok(vec![
    Artifact {
        artifact: ExecutableArtifact {
            target: Target {
                name: "frob_a",
                ..
            },
            ...
        },
        tests: vec![
            TestFn {
                name: "test_frobs_baz",
                test_type: TestType::Test,
            },
        ],
    },
    Artifact {
        artifact: ExecutableArtifact {
            target: Target {
                name: "frob_b",
                ..
            },
            ...
        },
        tests: vec![],
    }
])

仅支持默认测试运行器(libtest)。

为什么叫这个名字?

Sea Can 是货柜的另一种说法。货柜的发明是为了在处理货物周围提供一个标准接口。

依赖关系

~5–7MB
~131K SLoC