【发布时间】:2016-08-28 09:18:07
【问题描述】:
我可以在不使用 standard project layout 的情况下使用 Cargo 构建 Rust 代码吗?
我的源文件不在名为src 的目录中,这不会改变。我的二进制文件必须在当前目录中结束(或者,在某些其他项目中,在不称为target/SOMETHING 的不同目录中)。我可以告诉 Cargo 可执行文件 foo 必须从 foo.rs 和 bar.rs 构建在与 Cargo.toml 相同的目录中,而 qux 从 foo.rs 构建?
我不关心 Cargo 作为构建系统或部署系统。我只对它作为图书馆管理系统感兴趣。 Apparently Cargo is the only game in the Rust town for this.
【问题讨论】:
-
请问……为什么?约定优于配置等等……
-
@MatthieuM。我一直不明白为什么它不是“配置优于约定”。约定失败rule of two:如果您有两个约定不兼容的组件,您会怎么做?你被一股不可抗拒的力量困住,撞击着不动的货物。
-
如果您有两个组件的约定不兼容,您会怎么做? => 您进行必要的更改以使两者都符合约定,显然。 Cargo 开发得足够早,它可以从一开始就直接设置约定(1.0),以便所有项目都遵循相同的约定。话虽如此,可能可以对其进行调整(这就是为什么我发表评论而不是回答);就个人而言,我只是想知道这是否是个好主意……更改项目的成本可能低于每个维护者必须了解为什么它的工作方式不同的成本。
-
@MatthieuM。 Cargo 的开发当然还不够早,以至于无法制定惯例。目录树已经存在了半个多世纪!并非所有项目都是纯 Rust 项目。 (Java 有时我也有同样的问题,但 Rust 工具链在这方面似乎更糟。)
-
我显然是指 Rust 项目中的约定 :) 无论如何,我并不是说这是不可能的,只是逆流而上总是一场艰苦的战斗。
标签: rust directory-structure rust-cargo