Rust no_std split_at_mut函数中“没有为类型找到名为`split_mut_at`的方法”编译错误

Rust no_std split_at_mut函数中“没有为类型找到名为`split_mut_at`的方法”编译错误,rust,Rust,我试图从一个未编译的嵌入式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_m

我试图从一个未编译的嵌入式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必须在某个点工作。我使用IntellijRust和VisualStudio代码作为IDE,但这两个IDE都不能向我指出split_mut_at函数的定义。在这个例子中,板条箱和使用语句是一个雷区,如果没有大量的尝试和错误工作,就没有明确的方法来确定某些功能的位置

顺便说一句,split_at_mut通常可以在std::string::string中找到

是否有一个rust命令告诉您在您的项目中函数属于哪个板条箱?在进行rust更新时,更新rust文档总是需要很长时间。那当然有帮助

您正在寻找slice::split_at_mut请注意末尾的mut。在夜间文档和稳定文档中列出。它也确实可以用![无标准]。它在libcore中定义


当core或std中的函数x具有可变和不可变变量时,一般的经验法则是,需要不可变引用的函数命名为x,需要可变引用的函数命名为x_mut。

该函数称为split_at_mut,而不是split_mut,因为您可以互换使用这两个名称。随铁锈一起装运的库文件,包括核心和标准。浏览文档时,使用搜索栏搜索文档集中的所有可用板条箱。查看板条箱的根页面时,您可以在左侧的侧栏中看到板条箱。注意,基本类型是特殊的;它们总是记录在std中,即使方法是由core提供的,就像slice方法一样。谢谢你指出Francis,错过了!谢谢Daniel,现在了解命名约定非常有用。