关于开发工具以及tikv编译的问题

想知道各位用 vscode 还是 Intellij Rust 插件来写rust,最近把tikv源码拉下来,在 vscode 跟 intellij 插件上面编译,都会有点问题,也不知道咋搞,以下是用vs跟rust插件出现的问题,求指教



这是vscode在编译时总是报的错
未命名.md (3.8 KB)

按我个人经验的话,Intellij Rust plugin 相对 rust-analyzer 更稳定一些。rust-analyzer 有时候会出现无法输出 outline 以及无法 go to definition 的情况,需要 reload window

但两个插件都存在一些 badcase,会认为一些可以正常编译的代码存在问题。宏是比较容易出现问题的地方,我猜是插件对于宏的实现与 rustc 有些差异

第二个的 Unresolved reference: enumerate,我试了一下,如果增加一行 “use std::iter::Iterator as StdIterator;”,就可以消掉这个 error。这里的 enumerate 是通过 trait Itertools: Iterator 获得的。可能是 Rust plugin 不能很好的处理这种情况

最后,afl 编译失败。很久之前我也遇到过,但我忘记当时是怎么解决的了。从网上的一些资料看,可能跟你的编译环境有关(https://reverse.put.as/2017/07/10/compiling-afl-osx-llvm-mode/ )。如果不是最新版本的 macos 以及 xcode toolchain,我觉得可以升级到最新试试

另外,https://github.com/tikv/tikv/issues/7675 有介绍如何如何跳过 afl (–exclude fuzzer-afl),也可以尝试一下

最近换到vscode试了下,确实在 go to 上会有些问题,2 3两个问题,虽然vscode没事,插件有事,但是看来看去,要想ide不报错都要有点改动,afl那个我把依赖注释了就好了,感觉vscode还是用不习惯,不过它好的地方是 protobuf 可以跳过去,rust 插件不行,vscode代码提示感觉也不如rust插件,上次在discord里面问的时候有人说 rust 插件不支持 proc 宏,这两个确实对rust支持都还比较有限,哎只能将就了

Rust 插件目前是实验性支持 proc 宏,之前默认是关闭的(不确定最近的版本是否有变化)。需要打开的话,参考 https://blog.jetbrains.com/rust/2021/04/08/intellij-rust-updates-for-2021-1/#proc-macros