salvo-rs / salvo

A powerful web framework built with a simplified design.
https://salvo.rs
Apache License 2.0
3.4k stars 207 forks source link

真的不需要“rust-toolchain.toml”来管理版本吗? #972

Open immno opened 4 hours ago

immno commented 4 hours ago

默认下载一个最新的版本,其实和salvo的1.80是不匹配的,会导致一些潜在的问题: image 高版本的情况: image 使用rust-toolchain就会和项目版本进行匹配: image

对于新参与开发的小伙伴来说,本地的rustc版本肯定是多样的,有的可能比salvo高,那基本不会出问题,如果有的比salvo低,build大概率就会出错(我记得我23年第一次拉取salvo时,build时就出错了,不知道怎么办,当时还是菜鸟)。 总之,我认为对于想要来提交或者新手来说,体验还是挺糟糕的(为什么报错?需要手动调整版本)。 可以参考其他项目,感觉还是挺有必要的: openDAL
greptimeDB databend

chrislearn commented 3 hours ago

这个 rust-toolchain.toml 是否是强制必须找个版本的 rust? 还是说高于这个版本的都可以? 如果是强制,肯定不能添加。

immno commented 3 hours ago

是强制和指定的版本的匹配,是最低版本。我理解是开发时需要的版本,salvoCargo.toml指定的是1.80,两者匹配是没问题的吧,会影响到打出来的包,不兼容其他版本?

chrislearn commented 3 hours ago

https://rust-lang.github.io/rustup/overrides.html#the-toolchain-file

你可以仔细阅读一下官方的说明

immno commented 3 hours ago

我没看出官方说出的问题,我只想到两个场景:

  1. 使用方如果使用低版本(比如1.60),但是salvo使用的是1.80,假设还使用了1.60不具备的一些特性,那使用方能正常使用和编译吗?
  2. 我使用1.82.0并使用特有的api为现在的salvo提交了功能,但是salvocargo.toml声明还是1.80,这个版本如果被发布,客户端是低于1.82的话,能正常使用和编译吗?
chrislearn commented 3 hours ago
  1. 版本低于 salvo 要求吗版本必定报错。
  2. 你这种情况 salvo 的 ci 根本过不去。

强制客户必须用哪个版本 rust 是不合理的。如果他使用了多个 crates 而他们每一个强制用户使用的 rust 版本不一致,会是什么情况。 你可以去看一下其他的 web 库也都没有这个文件的。

immno commented 3 hours ago

不是阿,只会在当前crate生效:

mno@happypeel:~/.rustup$ find . -maxdepth 2 -type d
.
./toolchains
./toolchains/1.67.1-x86_64-unknown-linux-gnu
./toolchains/1.77.0-x86_64-unknown-linux-gnu
./toolchains/nightly-x86_64-unknown-linux-gnu
./toolchains/1.65.0-x86_64-unknown-linux-gnu
./toolchains/1.75.0-x86_64-unknown-linux-gnu
./tmp
./downloads
./update-hashes

我在本地看能不能模拟一下,依赖一个具有rust-toolchain.toml的库,会不会影响当前库的rustc版本以及正常使用