Вопросы по теме '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 просмотров
schedule
27.04.2022
Как найти структуру данных без псевдонимов
Я сражаюсь с последним боссом 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 просмотров
schedule
14.12.2022
Как я могу вернуть &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