Rust no_std Функция split_at_mut "не найден метод с именем` split_mut_at` для типа "Ошибка компиляции в стабильной среде ржавчины - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь извлечь куски кода из встроенного примера ржавчины, который не компилируется.Многие из этих старых встроенных примеров не компилируются, потому что они используют по ночам, и они быстро ломаются и игнорируются.

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.В примере есть минное поле ящиков и операторов использования, и нет четкого способа точно определить, где какая-то функция выполняется без огромных усилий проб и ошибок.

Кстати, split_at_mut обычно можно найти в std::string::String

Есть ли команда ржавчины, которая говорит вам, к какой корзине принадлежит функция в вашем проекте?Обновление документов ржавчины всегда занимает много времени при обновлении ржавчины.Конечно, это может помочь!

1 Ответ

0 голосов
/ 26 января 2019

Вы ищете slice::split_at_mut (обратите внимание на mut в конце).Он указан в ночных документах здесь и в стабильных документах здесь .Это также действительно доступно с #![no_std].Это определено в libcore здесь .

Как общее правило, когда функция x из core или std имеет изменяемый и неизменный вариант, функциятребующая неизменяемой ссылки называется x, а функция, требующая изменяемой ссылки, называется x_mut.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...