Результаты поиска по запросу "borrow-checker"

2 ответа

Спасибо! Это было очень полезное объяснение.

ел бы использоватьHashMap кэшировать дорогостоящие вычисления, зависящие от других записей на карте. Шаблон ввода обеспечивает только изменяемую ссылку на сопоставленное значение, но не на остальную частьHashMap, Буду очень признателен за отзыв о ...

2 ответа

Таким образом, черты должны быть в области, чтобы использовать их методы, но методы на границах черт могут использоваться, даже если черта не находится в области.

ве функции: fn foo<I>(iter: &mut I) where I: std::iter::Iterator<Item = u8>, { let x = iter.by_ref(); let y = x.take(2); } fn bar<I>(iter: &mut I) where I: std::io::Read, { let x = iter.by_ref(); let y = x.take(2); }В то время как первый ...

2 ответа

, Вытягивание присваивания из выражения соответствия - вот что удовлетворяет проверку заимствования здесь. Использовать ли локальную переменную или нет, в данном случае касается не только читабельности.

аюсь реализовать общую функциюjoin() это может работать на любом итераторе итераторов. У меня проблема с заемщиком вmatch выражение внутриnext() Реализация метода. Вот упрощенная версия моего кода: pub struct Join<I> where I: Iterator, I::Item: ...

ТОП публикаций

1 ответ

, но это потребовало бы изменения внутренних типов методов способом, который мне не нравится :(

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

1 ответ

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

у этот код компилируется? fn get_iter() -> impl Iterator<Item = i32> { [1, 2, 3].iter().map(|&i| i) } fn main() { let _it = get_iter(); }[1, 2, 3] является локальной переменной иiter() одалживает это. Этот код не должен компилироваться, потому ...

1 ответ

 на тип закрытия, вы можете просто опустить его.

ель - создать функцию (в частности, заливку), которая будет работать независимо от базовой структуры данных. Я попытался сделать это, передав два замыкания: одно для запросов, которое заимствует некоторые данные, а другое для мутации, которое ...

1 ответ

), компилятор не делает это автоматически. Однако вы можете сделать это вручную, разыменовав существующую изменяемую ссылку, а затем сослаться на нее снова:

у этот код не компилируется: fn use_cursor(cursor: &mut io::Cursor<&mut Vec<u8>>) { // do some work } fn take_reference(data: &mut Vec<u8>) { { let mut buf = io::Cursor::new(data); use_cursor(&mut buf); } data.len(); } fn produce_data() { let ...

1 ответ

s.

м году я пробую Advent of Code в Rust как способ изучения языка. Я проанализировал вход (с 7-го дня) в следующую структуру: struct Process { name: String, weight: u32, children: Vec<String>, parent: Option<String> }Они хранятся вHashMap<String, ...

1 ответ

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

у структуру данных в Rust. Он содержитVec пар ключ-значение. При вставке в структуру мне нужно найти соответствующий ключ и обновить как ключ, так и значение (которое на самом деле является дочерним указателем). Код выглядит примерно так, ...

1 ответ

 исправление путем «изменения способа десагарства вызовов методов», но все же предпочитает более общий подход, к сожалению, без объяснения причин.

от вопрос уже есть ответ здесь:Занимать проверку и аргументы функции в Rust, правильно или более усердно? [Дубликат] 1 ответВот образец: