gpt4 book ai didi

Rust no_std split_at_mut 函数 "no method named ` split_mut_at` 在 Rust stable 中找到类型“编译错误

转载 作者:行者123 更新时间:2023-11-29 08:29:11 24 4
gpt4 key购买 nike

我正在尝试从无法编译的嵌入式 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 总是需要很长时间。这当然会有帮助!

最佳答案

您正在寻找 slice::split_at_mut(注意末尾的 mut)。它在夜间文档中列出 here和稳定文档 here .它也确实可用于 #![no_std]。它在 libcore here 中定义.

作为一般经验法则,当来自 corestd 的函数 x 具有可变和不可变变体时,该函数需要不可变引用名为 x,需要可变引用的函数名为 x_mut

关于Rust no_std split_at_mut 函数 "no method named ` split_mut_at` 在 Rust stable 中找到类型“编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54379343/

24 4 0