Вопросы по теме 'borrow-checker'

Это что-то вроде заимствования Rust?
Когда я пытаюсь запустить другое приложение, пишу что-нибудь на его стандартном вводе, а затем жду его завершения, мой код выглядит примерно так (old_io): let mut process = Command::new("example_app") .arg("test").spawn().ok().expect("Failed.");...
112 просмотров
schedule 02.12.2022

Можно ли обмениваться данными с потоками без клонирования?
Когда я делегирую работу потокам, у меня часто есть фрагмент данных, который переживет все потоки, например numbers в следующем примере: use std::thread; fn main() { let numbers = vec![1, 2, 3]; let thread_a = thread::spawn(||...
724 просмотров
schedule 24.04.2023

Невозможно подключиться к порожденному дочернему процессу или от него более одного раза
Я хочу иметь возможность использовать Rust для создания дочерней оболочки, а затем многократно передавать ей произвольные команды и обрабатывать их выходные данные. Я нашел в Интернете множество примеров, показывающих мне, как передать одну команду и...
2137 просмотров
schedule 06.05.2022

Противоречивые требования к сроку службы, когда итератор выдает новый вектор
У меня есть такая структура Grid : pub struct Grid<Item : Copy> { raw : Vec<Vec<Item>> } Я пытаюсь переписать различные виды итераторов поверх него (в основном в качестве упражнения, поэтому я хочу сделать это, даже...
35 просмотров
schedule 09.07.2022

нельзя заимствовать переменную как изменяемую, потому что она также заимствована как неизменяемая при построении самореферентного HashMap
Я пытаюсь построить самореферентный HashMap : use std::collections::HashMap; struct Node<'a> { byte: u8, map: HashMap<i32, &'a Node<'a>>, } fn main() { let mut network = HashMap::<u32, Node>::new();...
194 просмотров
schedule 04.12.2022

Идиоматически доступ к элементу вектора изменяемый и неизменяемый
Как бы вы изменили вектор таким образом, что вам потребуется неизменная ссылка на указанный вектор, чтобы определить, как вам нужно изменить вектор? Например, у меня есть кусок кода, который выглядит примерно так, и я хочу продублировать последний...
284 просмотров
schedule 27.10.2022

Как изменить другой элемент в векторе, но не сам вектор, при итерации по вектору?
Мне совершенно ясно, что итерация по вектору не должна позволять телу цикла произвольно изменять вектор. Это предотвращает недействительность итератора, которая может привести к ошибкам. Однако не все виды мутаций приводят к недействительности...
398 просмотров
schedule 29.01.2023

Как использовать время жизни для вложенности изменяемого доступа?
Я пишу код на Rust для разбора потоков trait Stream . Потоки могут состоять из других потоков. Признак StreamIterator дает доступ к подпотокам. Это происходит при разборе файлов tar, zip-файлов и других файлов, содержащих файлы. При написании...
82 просмотров

Как найти структуру данных без псевдонимов
Я сражаюсь с последним боссом Rust, проверкой займов. Это упрощенная версия mio реактивного сетевого приложения, над которым я работаю. Я потратил слишком много времени на поиск правильной структуры данных для поставленной задачи. Я хочу...
132 просмотров
schedule 11.12.2022

Как передать `Option‹ & mut ›` нескольким вызовам функций, не вызывая ошибок перемещения?
Поскольку можно передавать изменяемую ссылку на вектор (не вызывая перемещений), как можно передать Option<reference> функциям несколько раз, не вызывая ошибок проверки заимствования? Этот простой пример просто показывает, что происходит,...
543 просмотров
schedule 01.10.2022

Я неправильно реализую IntoIterator для справки или это ошибка Rust, о которой следует сообщить?
Продолжая пример реализации IntoIterator для обернутого вектора согласно книге Rust , я также пытаюсь реализовать IntoIterator для ссылки на оболочку согласно следующий код (ссылка на игровую площадку) : struct VecWrapper(Vec<i32>);...
1634 просмотров
schedule 23.01.2023

Взять на себя ответственность за членство в заимствованной структуре
У меня есть следующая функция: pub fn finish_frame(&mut self) { if self.frame.is_none() { return; } self.frame.unwrap().finish().unwrap(); } При компиляции компилятор выдает следующую ошибку: error[E0507]: cannot...
31 просмотров
schedule 26.05.2022

Как реализовать контейнер с поддержкой изменяемого итератора?
Я хочу разработать класс игрушечного контейнера с поддержкой изменяемых итераторов, но у меня возникают проблемы с сортировкой времени жизни итератора и его ссылки на контейнер. Я попытался создать минимальный пример без компиляции: struct...
907 просмотров
schedule 14.05.2023

Как выразить итерацию через изменяемую рекурсивную структуру данных в Rust
Я пишу код для итеративного поиска в рекурсивной структуре данных, такой как следующая: struct Tree { payload: i32, children: Vec<Box<Tree>> } Предположим, что я хочу пройтись по каждой левой ветви дерева и изменить каждый...
1200 просмотров
schedule 03.07.2023

Упаковка общих аргументов функций в структуру - сокращение повторений, борьба с проверкой заимствования [дубликаты]
Я работаю над небольшим приложением, в котором я снова и снова передаю одни и те же аргументы &mut функциям. Пример: fn xyz(a: &mut A, b: &mut B) { /* ... */ } fn bar(a: &mut A, b: &mut B, c: &mut C) { xyz(a, b); /* ......
32 просмотров
schedule 31.03.2023

Когда компилятор Rust не может доказать, что заимствования не пересекаются?
В разделе 3.2 Nomicon под заголовком "живость" это говорит Однако часто бывает так, что Rust недостаточно умен, чтобы доказать, что множественные заимствования не пересекаются. В каком примере компилятор Rust не может доказать, что они...
124 просмотров
schedule 06.08.2022

Индексирование члена структуры Vec с членом HashMap в Rust
Я хочу хранить некоторые объекты в Vec и эффективно извлекать их по значению поля. На практике я хочу индексировать его по нескольким полям, иначе я мог бы просто использовать HashMap . Ни Vec , ни поля объекта не будут изменены позже. use...
860 просмотров
schedule 14.11.2022

Возврат ссылки на общий тип с общим свойством/значением Fn
Я только начинаю изучать Rust и работаю над книгой по Rust. Одна из глав приводит несколько примеров и заканчивается предлагаемыми упражнениями типа «попробуйте сделать этот общий». Я полностью ударился головой об этом. Полуобщий тип, с которого вы...
182 просмотров

Как я могу вернуть &str из строк в перечислении в методе реализации?
Я хочу вернуть название города/поселка/села как ссылку на str . Я могу указать время жизни в реализации, но указание его также для перечисления вызывает ошибку, поскольку для него не объявлена ​​​​ссылка. enum CityType { City { name: String...
830 просмотров
schedule 04.03.2023

Как получить количество ключей в HashMap после вставки или обновления значения?
Я хочу вставить или обновить значение на карте, а затем получить количество ключей. use std::collections::HashMap; fn main() { let mut map = HashMap::new(); let count = map.entry("Tom").or_insert(0); *count += 1; let size =...
2509 просмотров
schedule 28.09.2022