Описание тега borrow-checker
Средство проверки заимствований относится к анализу во время компиляции концепции владения, используемой языком программирования Rust. Этот тег следует использовать для связанных проблем и ошибок.
1
ответ
Как решить вопрос "срок действия ссылки истекает срок действия заимствованного контента" в следующем контексте?
У меня есть следующая структура в моем lib.rs pub enum ConfigurationSource { StringContent(String), FileContent(PathBuf) } pub struct ConfigurationBuilder<'a> { config: Value, bundles: HashMap<&'a str, &'a Vec<ConfigurationSource…
12 ноя '17 в 11:31
1
ответ
Занимать проверку и аргументы функции в Rust, правильно или более усердно?
Когда изменяемый аргумент передается в качестве аргумента функции, средство проверки заимствования не позволяет использовать его для создания других аргументов, даже когда эти аргументы клонируют значения без ссылки. Хотя присваивание переменных за …
02 янв '17 в 03:43
2
ответа
"не может выйти из переменной, потому что она заимствована" при вращении переменных
Я пишу программу, которая пишет в файл и вращает файл, в который он пишет время от времени. Когда я проверяю, чтобы вращать файл, я не могу изменить файл, так как он заимствован моей структурой. Даже если я drop экземпляр структуры, я не могу восста…
30 ноя '15 в 20:46
0
ответов
Атрибут Структуры соответствия ржавчины в методе не проверяет заимствование
#[derive(Debug)] enum E { Foo(u32), Bar, Baz } struct S { a: E } impl S { fn print(&self) { match self.a { E::Foo(a) => println!("{}", a), e => println!("{:?}", e) } } } fn main() { let a = S { a: E::Bar }; a.print(); } Этот клип не компил…
29 ноя '16 в 15:16
1
ответ
Как сохранить ссылку на обработчик в поле hashmap
Я изучаю Rust и пытаюсь написать сервер websocket. Логика следующая: WSConnectionFactory создает WSHandler, который обрабатывает входящие сообщения и отправляет их другим клиентам в соответствии с произвольными правилами. Проблема в том, что я не зн…
23 апр '16 в 23:36
0
ответов
Не могу понять, как Rust's заемщик работает на этом примере
У меня есть следующий код (немного потерянный из кода, который у меня был), который рекурсивно перебирает изменяемый список, пока не будет выполнено определенное условие. struct Node { value: usize, next: Option<Box<Node>>, } fn recursiv…
14 июн '17 в 04:14
1
ответ
Как получить изменяемую структуру из HashMap?
У меня есть хэш-карта для всех моих состояний, которая является HashMap<String, Rc<State>>и я хочу позвонить текущему участнику fn init(&mut self), Но я получаю сообщение об ошибке со следующим кодом: ... if let Some(state) = self.st…
03 авг '15 в 14:50
3
ответа
Trait не реализован для типа `&A` при передаче массива пар в функцию
Я пытаюсь написать функцию set которая вызывает библиотеку Rust LMDB( docs) и пример, над которым я работаю. Я не могу на всю жизнь заставить это работать. Вот моя текущая попытка: fn main() { let env = getenv("duperdb"); let dbhandle = get_dbhandle…
15 мар '16 в 16:23
1
ответ
Проблемы со временем жизни, когда один экземпляр структуры нуждается в ссылке на другой
Я пытаюсь написать простую игру с SFML и Rust, но средство проверки заимствований оказывается моим главным врагом в этом путешествии. Существует множество случаев, когда SFML нужна ссылка на другой объект. В приведенном ниже коде мне нужна ссылка на…
07 янв '16 в 14:58
1
ответ
Освободите заимствования в Русте
Я пробую Rust и у меня есть некоторые проблемы с пониманием "заимствования". fn main() { let mut x = 10; let mut a = 6; let mut y = &mut x; *y = 6; y = &mut a; x = 15; println!("{}", x); } И у меня есть ошибка: error[E0506]: cannot assign to…
20 апр '17 в 15:19
1
ответ
Почему возврат изменяемой ссылки из метода препятствует вызову любых других методов, даже если ссылка выходит из области видимости?
Я хочу написать простое хранилище ключей / значений, которое может хранить все что угодно. Я начал с небольшой обертки вокруг HashMap: use std::any::{Any, TypeId}; use std::collections::HashMap; #[derive(Debug)] struct Pair<'a> { key: &'a …
26 фев '19 в 14:08
2
ответа
Как изменить два поля одновременно в структуре Rust?
Рассмотрим следующий простой пример: pub struct Bar { curr: Vec<i32>, prev: Vec<i32>, } pub fn main() { let mut b = Bar { curr: vec![1, 2, 3], prev: vec![2, 3, 4] }; foo(&mut b); } pub fn foo(bar: &mut Bar) { let next = vec![3, 4…
18 авг '17 в 15:15
0
ответов
Нелексический пожизненный обходной отказ
get() возвращает ссылку на элемент вектора, предварительно выдвигая значение при необходимости: struct Container { vec: Vec<i32>, } impl Container { fn find(&mut self, v: i32) -> Option<&mut i32> { None // we don't care the im…
07 июн '17 в 15:53
1
ответ
Как добавить ссылки на контейнер, когда заимствованные значения создаются после контейнера?
По причинам, связанным с организацией кода, мне нужно, чтобы компилятор принял следующий (упрощенный) код: fn f() { let mut vec = Vec::new(); let a = 0; vec.push(&a); let b = 0; vec.push(&b); // Use `vec` } Компилятор жалуется error: `a` doe…
08 июл '17 в 15:05
2
ответа
Почему заимствования членов структуры допускаются в &mut self, но не в self неизменным методам?
Если у меня есть структура, которая инкапсулирует два члена и обновляет один из них на основе другого, это нормально, если я делаю это следующим образом: struct A { value: i64 } impl A { pub fn new() -> Self { A { value: 0 } } pub fn do_something…
18 мар '17 в 19:50
1
ответ
Клонировать клонируемый элемент неклонируемого объекта в сопоставлении с образцом
Я работаю над проектом, который использует BTreeMap с обычаем enum для ценностей. это enum не могу #[derive(Clone)]потому что некоторые варианты могут включать значение, которое не Cloneвозможность. Вот примерный план моего проекта: enum Foo { // Ba…
05 мар '18 в 09:13
1
ответ
Два изменчивых заимствования происходят на одной линии?
Я пытаюсь использовать ящик для снежного кома в Rust, чтобы остановить вектор слов. Это должно быть просто, но средство проверки заимствований продолжает отклонять мой код: // Read user input let input = stdin(); let mut stemmer = Stemmer::new("engl…
19 дек '16 в 16:39
0
ответов
Доступ к различным полям одной и той же структуры одновременно и изменчиво
Я пытаюсь написать карточную игру на Rust, но столкнулся с проблемой проверки заимствований. Мой основной struct это Gameкоторый выглядит так struct Game { players: HashMap<String, Player>, deck: Vec<Card>, } Игрок что-то вроде struct Pl…
29 авг '17 в 09:06
1
ответ
Aquire &'T T из варианта<T <' a >>
Боюсь, это может быть очень просто, но я не смог понять это самостоятельно. У меня есть эта карта: subscriptions_map: HashMap<SubscriptionKey, Subscription<'a>> и этот вектор: subscriptions: Vec<&'a Subscription<'a>>, Я х…
21 мар '16 в 18:03
0
ответов
Как мне решить "не может заимствовать" *self "как изменяемый, потому что" self.bundles` также заимствован как неизменяемый "в следующем контексте?
У меня есть следующий код в моем lib.rs extern crate serde; extern crate serde_json; extern crate build_script_file_gen; use serde_json::Value; use serde_json::from_str; use std::fs::File; use std::io::Read; use std::collections::HashMap; pub enum C…
14 ноя '17 в 12:51