错误:无法为“tree-sitter”选择版本。 gpui.rs

问题描述 投票:0回答:1

我正在尝试使用 gpui.rs 创建简单的 ui 程序。

下面是 Cargo.toml -

[package]
name = "gpui-first-look-duanne-bester"
version = "0.1.0"
edition = "2021"

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

[dependencies]
gpui = { git = "https://github.com/zed-industries/zed" }
assets = { git = "https://github.com/zed-industries/zed" }
theme = { git = "https://github.com/zed-industries/zed" }
settings = { git = "https://github.com/zed-industries/zed" }
ui = { git = "https://github.com/zed-industries/zed" }

下面是我的

main.rs
文件-

use gpui::*;
use assets::Assets;
use settings::{default_settings, SettingsStore};
use theme::{ThemeRegistry, ThemeSettings};
use seetings::Settings;

struct HelloWorld {
    text: SharedString,
}

impl Render for HelloWorld {
    fn render(&mut self, _cx: &mut ViewContext<Self>) -> impl IntoElement {
        div()
            .flex()
            .bg(rgb(0x2e7d32))
            .size_full()
            .justify_center()
            .items_center()
            .text_xl()
            .text_color(rgb(0xffffff))
            .child(format!("Hello, {}!", &self.text))
    }
}

fn main() {
    App::new().run(|cx: &mut AppContext| {

        let theme_name = "One Dark";

        let mut store = SettingsStore::default();
        store.set_default_settings(default_settings().as_ref(), cx)
            .unwrap();
        cx.set_global(store);

        theme::init(themes_to_load: theme::LoadThemes::All(Box::new(Assets)), cx);

        let theme_registry :&ThemeRegistry = cx.global::<ThemeRegistry>();
        let mut theme_settings: ThemeSettings = ThemeSettings::get_global(cx).clone();
        theme_settings.active_theme = theme_registry.get(&theme_name).unwrap();
        ThemeSettings::override_global(theme_settings, cx);

        cx.open_window(WindowOptions::default(), |cx| {
            cx.new_view(|_cx| HelloWorld {
                text: "World".into(),
            })
        });
    });
}

当我这样做时

cargo run
我收到以下错误 -

货物运行 更新 git 存储库

https://github.com/zed-industries/zed

更新 crates.io 索引

更新 git 存储库

https://github.com/zed-industries/font-kit

更新 git 存储库

https://github.com/DioxusLabs/taffy

更新 git 存储库

https://github.com/kvark/blade

更新 git 存储库

https://github.com/zed-industries/bromberg_sl2

错误:无法为

tree-sitter
选择版本。

...包裹需要

settings v0.1.0 (https://github.com/zed-industries/zed#0ce5cdc4)

...满足包

settings
 的 git 依赖性 
gpui-first-look-duanne-bester v0.1.0 (/Users/rnatarajan/Documents/Coding/others/gpui-first-look-duanne-bester)

符合要求的版本

^0.20
有:0.20.10、0.20.9、0.20.8、0.20.7、0.20.6、0.20.5、0.20.4、0.20.3、0.20.2、0.20.1 , 0.20.0

软件包

settings
依赖于
tree-sitter
,具有以下功能:
wasm
,但
tree-sitter
没有这些功能。

无法为

tree-sitter
选择可以解决此冲突的版本

知道这里出了什么问题吗?我该如何修复这个错误? 我的项目在 github here.

rust rust-cargo
1个回答
0
投票

这是一个不在您的代码中的错误。来自

https://github.com/zed-industries/zed
Cargo.toml 当前内容包括:

[workspace.dependencies]
...
tree-sitter = { version = "0.20", features = ["wasm"] }

这是自相矛盾的,因为

wasm
功能直到不兼容的0.21版本才引入。这是无法编译的。那么,为什么这没有让大家失望呢?因为
Cargo.toml
还包含一个 patch ,它覆盖了此依赖项:

[patch.crates-io]
tree-sitter = { git = "https://github.com/tree-sitter/tree-sitter", rev = "4294e59279205f503eb14348dd5128bd5910c8fb" }

因此,在构建

zed
工作区时,会从特定的 Git 提交(确实声明了
tree-sitter
功能)中获取
wasm
源。但是,当您仅依赖于库而不是在特定工作区中构建/开发时,补丁将被忽略。 因此,出于您的目的,错误位于

zed

存储库中。如果他们希望支持以您尝试的方式使用他们的库,那么他们应该将

patch
替换为普通的
git
依赖项:
[workspace.dependencies]
...
tree-sitter = { git = "https://github.com/tree-sitter/tree-sitter", rev = "4294e59279205f503eb14348dd5128bd5910c8fb", features = ["wasm"] }

我没有看到任何解释为什么他们

这样做——没有评论,并且添加补丁的提交也没有解释。所以也许这只是一个疏忽,他们欢迎 PR 来简化它——或者可能有一个不明显的原因这是必要的。

© www.soinside.com 2019 - 2024. All rights reserved.