【发布时间】:2019-01-26 14:32:49
【问题描述】:
我正在尝试从无法编译的嵌入式 rust 示例中提取一些代码。许多这些旧的嵌入式示例无法编译,因为它们每晚都使用,并且很快就会被破坏和忽视。
let mut buffer : [u8; 2048] = [0;2048];
// some code to fill the buffer here
// say we want to split the buffer at position 300
let (request_buffer, response_buffer) = buffer.split_mut_at(300);
此示例使用#![no_std],因此没有可链接的标准库,并且必须在某个时候编译,因此函数 split_mut_at 必须在某个时候起作用。我使用 IntelliJ rust 和 Visual Studio Code 作为 IDE,但两个 IDE 都不能指向 split_mut_at 函数的定义。示例中有一个 crates 和 use 语句的雷区,并且没有明确的方法来确定某些功能在没有大量试错的情况下会出现在哪里。
顺便说一句,split_at_mut 通常可以在std::string::String中找到
是否有 rust 命令可以告诉您项目中某个函数属于哪个 crate?在进行 rust 更新时,更新 rust-docs 总是需要很长时间。肯定会有帮助!
【问题讨论】:
-
该函数称为
split_at_mut,而不是split_mut_at(您可以互换使用这两个名称)。 Rust 附带的库的文档(包括core和std)is also online。浏览文档时,使用搜索栏搜索文档集中所有可用的 crate(查看 crate 的根页面时,您可以在左侧边栏中看到 crate)。请注意,原始类型是特殊的;它们总是记录在std中,即使这些方法是由core提供的(切片方法也是如此)。 -
感谢弗朗西斯指出这一点,错过了!
标签: rust