gpt4 book ai didi

rust - 如何在同一个仓库中组织多个构建

转载 作者:行者123 更新时间:2023-12-03 11:43:51 24 4
gpt4 key购买 nike

我不熟悉 rust 并试图玩网络组装。
我使用 yew 创建了一个简单的应用程序,它使用主干构建,这按预期工作。
然后我使用 actix 创建了一个简单的 html 服务器,这也被确认按预期工作。
我遇到的问题是,如果 actix 包包含在 cargo 依赖项中,则 wasm 构建失败(这似乎是合理的 - 当然在浏览器构建上下文中)。
我不希望将它分成多个 crate - 至少在我进行原型(prototype)设计时,所以我希望有一种方法可以设置 2 个构建管道或使依赖项有条件 - 寻找关于如何最好地做到这一点的建议。
项目设置如下:

Cargo.toml
dist/
src/
frontend.rs # call to frontend code from non-main function
main.rs # fn main() here - can be empty function for the frontend
frontend/
mod.rs
app.rs # no actix dependency
shared/
mod.rs
shared.rs # no actix dependency
server/
mod.rs
server.rs # this has the actix dependency
目前我的情况是,以下 cargo.toml 和 main 将运行前端:
main.rs:
fn main() {}
cargo .toml:
[dependencies]
seed = "0.8.0"
external_shared_stuff = "0.2.0"
以下将运行服务器:
main.rs:
mod server;

fn main() -> std::io::Result<()> {
server::server::serve()
}

cargo .toml:
[dependencies]
seed = "0.8.0" //not required but no issue - would prefer it wasnt included
external_shared_stuff = "0.2.0"
actix-web = "3"
我目前使用主干为前端构建/服务,并为服务器运行 cargo 。配置它以便两个构建工作的最佳方法是什么,我可以在不复制共享依赖项的情况下做到这一点吗?是否可以在构建目标上建立依赖关系?
在此先感谢您的帮助

最佳答案

I'm hoping there is a way to ... make a dependency conditional


Specifying Dependencies in the Cargo Book用于在 Cargo.toml 中配置条件依赖.在你的情况下,你会想要这样的东西:
[dependencies]
seed = "0.8.0"
external_shared_stuff = "0.2.0"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
actix-web = "3"

关于rust - 如何在同一个仓库中组织多个构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66373157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com