2 个不稳定版本
0.1.0 | 2021 年 5 月 18 日 |
---|---|
0.0.1 | 2021 年 5 月 17 日 |
#1981 in 开发工具
用于 cargo-rr
48KB
1K SLoC
seacan
一个用于与 cargo 交互以构建东西的库。
主要入口点是 bin::Compiler
和 test::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