Rust 自动补全不适用于某些板条箱

Rust autocompletion not working with certain crates

我在使用某些 crate 时遇到了 IDE 的自动完成功能问题,例如 pnet。我将 CLion 与 Rust 扩展一起使用,但 VSCode 也会出现问题。 IDE 似乎完全不知道库的某些部分。

let packet = pnet::packet::ipv4::Ipv4Packet::new(&data);

例如,我在 ipv4:: 之后失去了自动补全功能。语法高亮也不起作用。

这与这个板条箱使用宏的方式有关吗?有人知道如何使自动完成工作吗?

自动完成引擎存在 Rust 宏和生成代码的已知问题。

这可能是导致 pnet 问题的原因。

pnet::packetdefined as

extern crate pnet_packet;

/// Support for packet parsing and manipulation.
pub mod packet {
    pub use pnet_packet::*;
}

其中 pnet_packet 是一个带有 build.rs script 的板条箱,可生成大部分代码。

据我所知,您无能为力IDE。