在 <path> 找到了一个虚拟清单,而不是一个包清单

dun*_*cks 7 rust rust-cargo

[rust] "instead of a package manifest"在问之前在这个网站上搜索过,但没有找到。我还在这里阅读了虚拟清单但没有解决我的问题。

我的目标是对azul进行更改。

为了实现这一点,我在这里阅读了有关修补依赖项的信息,现在我有了这个Cargo.toml

[package]
name = "my_first_azul_app"
version = "0.1.0"
authors = ["Name <Email>"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
azul = { git = "https://github.com/maps4print/azul" }

[patch."https://github.com/maps4print/azul"]
azul = { path = "../azul" }
Run Code Online (Sandbox Code Playgroud)

在路径中,../azul我使用git clone. 在main.rs我遵循这个得到,

extern crate azul;

fn main() {
    println!("Hello world!");
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试测试

$ cargo run
error: failed to resolve patches for `https://github.com/maps4print/azul`

Caused by:
  failed to load source for a dependency on `azul`

Caused by:
  Unable to update /home/name/projects/azul

Caused by:
  found a virtual manifest at `/home/name/projects/azul/Cargo.toml` instead of a package manifest
Run Code Online (Sandbox Code Playgroud)

我不明白最后引起的行。如果我删除[patch]配置,它“有效”。引用是因为它无法编译,但这就是我试图检查它并尝试修复的原因。我需要支付什么费用来发展azul依赖?

TIA,

use*_*504 19

看起来 azul 正在使用工作区,因此如果您想通过路径引用它,则必须指向该工作区的确切成员。

azul 的 Cargo.toml 包含


[workspace]
members = [
    "cargo/azul",
    "cargo/azul-css",
    "cargo/azul-core",
    "cargo/azul-layout",
    "cargo/azul-text-layout",
    "cargo/azul-widgets",
    "cargo/azul-css-parser",
    "cargo/azul-native-style",
]

Run Code Online (Sandbox Code Playgroud)

所以我相信你应该能够做类似的事情:


[dependencies]
azul = { path = "../azul/cargo/azul"
azul-css = { path = "../azul/cargo/azul-css" }

Run Code Online (Sandbox Code Playgroud)

您可能需要那里的所有/部分成员。


Cor*_*mer 8

cargo install对于那些因为尝试并收到错误消息而提出这个问题的人:

\n
$ cargo install                            \nerror: found a virtual manifest at `~/nextclade/Cargo.toml` instead of a package manifest\n
Run Code Online (Sandbox Code Playgroud)\n

解决方案很简单,只需添加--path <executable-sub-cratepath>

\n
$ cargo install --path packages_rs/nextclade-cli                         \nerror: found a virtual manifest at `~/nextclade/Cargo.toml` instead of a package manifest\n
Run Code Online (Sandbox Code Playgroud)\n

对于这样结构的工作空间:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 packages_rs\n   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 nextclade\n      \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 nextclade-cli\n      \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 nextclade-web\n      \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n
Run Code Online (Sandbox Code Playgroud)\n

这是在https://github.com/rust-lang/cargo/issues/7599中跟踪的

\n