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

Невозможно выйти из заимствованного контента / не может выйти из-за общей ссылки
Я не понимаю ошибку cannot move out of borrowed content . Я получал ее много раз и всегда решал ее, но никогда не понимал почему. Например: for line in self.xslg_file.iter() { self.buffer.clear(); for current_char in...
73828 просмотров

Как получить изменяемую структуру из HashMap?
У меня есть хэш-карта для всех моих состояний, которая является HashMap<String, Rc<State>> , и я хочу вызвать член текущего состояния fn init(&mut self) . Но я получаю сообщение об ошибке со следующим кодом: ... if let...
1368 просмотров
schedule 25.04.2024

Могу ли я создать структуру, которая работает как со значениями, так и с заимствованными ссылками на черту?
Я хочу создать структуру, которая обертывает другой тип, но может принимать как собственные, так и заимствованные версии значений, реализующих данную черту. Например, допустим, у меня есть черта Foobar : trait Foobar { fn...
97 просмотров
schedule 01.03.2022

Как обновить черту Slicable, чтобы проверять заемные средства при повторных вызовах
У меня есть библиотека ввода-вывода с большой структурой State , и я пишу функцию, которая требует двух этапов. На первом этапе затрагивается только класс читателя, но сайт вызова выбирает доступный только для чтения срез таблицы для передачи. На...
78 просмотров
schedule 14.05.2022

Ошибки компиляции заимствования Rust
Я пытаюсь изучить Rust, написав простой лексер. Вот что у меня пока... use std::fs::File; use std::io::Read; use std::str::Chars; pub struct Lexer<'a> { file_name: String, file_contents: String, iterator:...
66 просмотров
schedule 06.01.2024

Почему в &mut self разрешено заимствование членов структуры, но не из self в неизменяемые методы?
Если у меня есть структура, которая инкапсулирует два члена и обновляет один на основе другого, это нормально, пока я делаю это следующим образом: struct A { value: i64 } impl A { pub fn new() -> Self { A { value: 0 } }...
823 просмотров
schedule 22.03.2024

Ссылка имеет меньшее время жизни, чем ее значение из той же области?
В моем коде видно, что значение живет дольше, чем ссылка на него, хотя оба они созданы в одной области. Я хотел бы знать, почему и как я могу изменить время жизни моей ссылки. Пример 1 принимается компилятором ... let mut rxs:...
72 просмотров
schedule 12.09.2022

Невозможно одолжить Vec внутри закрытия
У меня есть вектор Unit s. Я пытаюсь создать переменную Vec<Vec<Unit>> с именем world . В процессе создания плиток мне нужно знать, какие плитки являются соседними, о которых он знает. У меня есть функция, которая возвращает...
614 просмотров
schedule 24.10.2022

Что я делаю неправильно в этом коде, чтобы реализовать функцию `dequeue` для очереди?
Я пытаюсь реализовать функцию dequeue для очереди, но не понимаю, как работает средство проверки заимствования. Что я делаю неправильно в этом коде? use std::cell::RefCell; use std::rc::Rc; use std::mem::replace; type Link<T> =...
380 просмотров
schedule 16.09.2023

Доступ к разным полям одной и той же структуры одновременно и изменчиво [дубликаты]
Я пытаюсь написать карточную игру на Rust, но столкнулся с проблемой проверки заимствований. Мой основной struct — это Game , который выглядит так struct Game { players: HashMap<String, Player>, deck: Vec<Card>, }...
202 просмотров

Средство проверки заимствований не позволяет возвращать изменяемую ссылку из функции обхода дерева
Мне нужно найти узел с максимальным значением в дереве, предполагая, что значения подузла всегда больше, чем значение узла-владельца, а затем изменить его: #[derive(Debug)] struct Node { val: usize, nodes: Vec<Node>, } fn...
289 просмотров
schedule 04.02.2022

Как я могу организовать несколько ссылок на один и тот же объект в Rust с подсчетом ссылок?
У меня есть структура, представляющая полином, и я хочу, чтобы несколько полиномов ссылались на один и тот же объект mutable Aliases . В JavaScript я бы создал экземпляр объекта Aliases и присвоил его p1.aliases , p2.aliases и так далее. В...
1260 просмотров
schedule 08.05.2022

В чем разница между разыменованием необработанного указателя на String и необработанного указателя на i32?
fn func(s: *mut String, a: *mut i32) -> usize { println!("{}", unsafe { *s }); println!("{}", unsafe { *a }); unsafe { (*s).len() } } fn main() { let mut s = String::from("hello"); let mut a = 10; func(&mut s,...
1180 просмотров

Как изменчиво заимствовать указатель в штучной упаковке при переборе `Vec‹Box‹SomeTrait››`?
У меня есть индивидуальная черта, подобная этой: pub struct SomeObject; pub trait Renderer { fn render(&self) -> Vec<SomeObject>; } и модуль с несколькими структурами, реализующими указанную черту. Модуль предоставляет одну...
24 просмотров
schedule 05.12.2022

Что не так с заимствованием себя в классической реализации односвязного списка
Я новичок в огромном мире Rust. Я изучаю его уже неделю, и у меня появилась какая-то концепция, однако что-то не так с моей классической реализацией односвязного списка, и это связано с заимствованием и моим непониманием жизней. Вот код: use...
103 просмотров

Взаимно заимствование в операторе совпадения и результате
Я пытаюсь определить, есть ли в контейнере объект, и вернуть найденный объект, если он есть, или добавить его, если его нет. Я нашел Rust заимствует изменяемое выражение self внутри выражения соответствия , которое имеет ответ, в котором...
594 просмотров
schedule 03.06.2023

Почему Rust позволяет модифицировать изменяемую структуру после перемещения ее в замыкание?
Что позволяет компилировать следующий фрагмент кода? #[derive(Debug)] struct Abc { x: i32, } fn main() { let mut n = Abc { x: 20 }; let c = &move || { println!("{:?}", n); }; (*c)(); n.x = 12; //-> But n is...
55 просмотров
schedule 24.11.2023

Время жизни для метода, возвращающего итератор структур с таким же временем жизни
Предположим следующий надуманный пример: struct Board { squares: Vec<i32>, } struct Point<'a> { board: &'a Board, x: i32, y: i32, } impl<'a> Point<'a> { pub fn neighbors(&self) -> impl...
601 просмотров
schedule 16.03.2022

совпадение временного члена живет недостаточно долго
Следующий код не компилируется (playground) : #![allow(unused)] use std::cell::RefCell; enum Token { A, B, } struct Thing { c: Token, } fn main() { let a = RefCell::new(Thing { c: Token::A }); if let Token::A =...
39 просмотров
schedule 26.12.2023

Не удается выйти из заимствованного содержимого при попытке десериализации hyper :: Request.body ()
Я пытаюсь разобрать тело запроса на строго типизированный объект с помощью serde_json: #[macro_use] extern crate serde_derive; // 1.0.70 extern crate futures; // 0.1.23 extern crate hyper; // 0.12.7 extern crate serde_json; // 1.0.24 use...
526 просмотров
schedule 01.03.2024