Публикации по теме 'borrow-checker'


Раскрытие возможностей средства проверки заимствований в Rust
Rust — это современный высокопроизводительный язык программирования, разработанный Mozilla. Многие программисты любят Rust за его скорость, безопасность и параллелизм. Одной из уникальных особенностей Rust является средство проверки заимствования, которое представляет собой функцию компилятора, проверяющую безопасность памяти во время компиляции. Средство проверки заимствования — одна из самых мощных и отличительных особенностей Rust. Он применяет правила владения и заимствования во..

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

заимствованное значение не живет достаточно долго при использовании структуры со срезом
Примечание редактора: код в этом вопросе предшествует Rust 1.0. С тех пор семантика изменилась, и некоторые утверждения, сделанные в вопросе, больше не соответствуют действительности. У меня есть следующий фрагмент кода: extern crate...
667 просмотров
schedule 04.04.2023

Доступ к неизменяемым методам во время итерации по изменяемому члену
Изучая итераторы в Rust, я создал следующую структуру, чтобы скрыть реализацию двумерной коллекции: use std::slice::{Items, MutItems}; use std::vec::{Vec}; pub struct Table<T> { pub width: uint, pub height: uint, data:...
1742 просмотров
schedule 02.11.2022

Невозможно выйти из заимствованного контента при попытке передать право собственности
Я пишу связанный список, чтобы разобраться в сроках жизни, владении и ссылках на Rust. У меня такой код: pub struct LinkedList { head: Option<Box<LinkedListNode>>, } pub struct LinkedListNode { next:...
14939 просмотров

Не удается выйти из заимствованного содержимого при суммировании аргументов командной строки
Это моя первая программа на Rust, и, кажется, я уже сталкивался с ужасной проверкой заимствований. :) Программа должна прочитать аргументы, переданные в командной строке, суммировать их и вернуть результат. У меня проблемы с разбором аргументов в...
2241 просмотров
schedule 02.06.2023

Временно отказаться от заимствованного контента
Я пытаюсь заменить значение в изменяемом заимствовании; переместив его часть в новое значение: enum Foo<T> { Bar(T), Baz(T), } impl<T> Foo<T> { fn switch(&mut self) { *self = match self {...
1751 просмотров
schedule 27.02.2023

Заимствованное значение не живет достаточно долго ошибка компилятора для структуры
Я новичок в языке и все еще борюсь с проверкой заимствований. Я видел, что некоторые библиотеки используют функции new (), также известные как конструкторы без параметров, и это работает. В основном это означает, что возвращаемые данные создаются...
6184 просмотров
schedule 07.04.2022

Как понять эту ошибку заимствованной стоимости? Создание Vec ‹& PathBuf›
Как мне понять, какую часть проверки заимствований я нарушаю? Поскольку стандартная библиотека Rust walk_dir указана как "нестабильная" (как of 2015-09-27), я подумал, что попытаюсь создать свою собственную функцию, чтобы захватывать все файлы...
87 просмотров
schedule 23.08.2023

Как я могу смоделировать двунаправленную карту, не раздражая программу проверки заимствований?
Из Почему я не могу сохранить значение и ссылку на это значение в одной структуре? Я узнал, что Я не могу хранить значение и ссылку в одной структуре. Предлагаемое решение: Самое простое и наиболее рекомендуемое решение - не пытаться...
1692 просмотров
schedule 29.01.2023

Как я могу обойти проблему с RefCell?
У меня есть структура с двумя указателями C и одним Rust HashMap . struct MyStruct { p1: *mut ..., p2: *mut ..., hm: Box<HashMap<...>> } Моя структура обрабатывается как Rc<RefCell<MyStruct>> , и у меня...
385 просмотров
schedule 28.12.2022

Черта не реализована для типа `&A` при передаче массива пар в функцию
Я пытаюсь написать функцию set , которая вызывает библиотеку LMDB Rust ( docs ), и пример, который я отработка . Я не могу на всю жизнь заставить это работать. Вот моя текущая попытка: fn main() { let env = getenv("duperdb"); let...
648 просмотров
schedule 11.02.2023

Как можно реализовать вложенный цикл с мутациями в HashMap в Rust?
У меня есть следующий (урезанный) код Rust: use std::collections::HashMap; struct Node { weight: f64, outbound: f64, } struct Graph { edges: HashMap<u32, HashMap<u32, f64>>, nodes: HashMap<u32, Node>, } impl...
709 просмотров
schedule 28.07.2023

Как извлечь значения из итератора & mut?
Я пытаюсь создать итератор, который отображает строку в целое число: fn main() { use std::collections::HashMap; let mut word_map = HashMap::new(); word_map.insert("world!", 0u32); let sentence: Vec<&str> =...
111 просмотров

Как сообщить компилятору Rust, что заимствование закончилось?
просматривая руководства насчет Rust я столкнулся с проблемой проверки заимствований. Следующий код не компилируется: struct Car { model: String, } struct Person<'a> { car: Option<&'a Car>, } impl<'a>...
183 просмотров
schedule 25.01.2023

Как я могу сделать изменяемое заимствование в цикле for?
Я старался: fn main() { let mut vec = [1, 2, 3]; for mut x in &vec { *x = 3; } for mut &x in &vec { x = 3; } for mut *x in &vec { x = 3; } for mut x in mut &vec { *x = 3; } for mut x in &(mut...
12521 просмотров
schedule 23.06.2022

Управление объектом из цикла, который его заимствует
Я пишу код на Rust, который подключается к удаленному серверу, и в зависимости от сообщений, отправленных этим сервером, вычисляет некоторую статистику или выполняет действия на основе этой статистики. Но для меня это скорее обучающий проект, и я...
3313 просмотров
schedule 29.03.2023

Есть ли идиоматический способ сохранить ссылки на элементы постоянно растущего контейнера?
Я пытаюсь написать контейнер для объектов типа T , который предоставляет доступ к ссылкам &T на сохраненные объекты (я хочу избежать создания копий). Поскольку контейнер растет только в течение своего времени существования, время жизни...
497 просмотров
schedule 31.03.2022

Безопасные нетривиальные зависимости данных / пользовательские ссылки?
Одной из центральных особенностей Rust является принудительная безопасность ссылок во время компиляции, которая достигается за счет механики владения и явного времени жизни. Можно ли реализовать «пользовательские» ссылки, которые выиграют от того же?...
107 просмотров
schedule 17.10.2022

Как мне успокоить средство проверки заимствования с помощью вложенных структур данных?
Я работаю над (довольно амбициозным) текстовым редактором и пытаюсь реализовать произвольные вертикальные и горизонтальные разбиения для отображения текстовых буферов, что-то вроде этого: buffer ----------------- buffer | -------| buffer...
73 просмотров
schedule 20.11.2022

Игровой цикл в Rust при удовлетворении проверки заимствования
Вот очень простой пример игрового цикла в Rust: trait Entity { fn update(&mut self, world: &mut World); } struct World { entities: Vec<Box<Entity>> } impl World { fn update(&mut self) { for ent in...
67 просмотров
schedule 16.03.2023

Как успокоить средство проверки заимствований при возврате ссылки на отфильтрованный вектор внешних ссылок
Я пытаюсь реализовать функцию поиска, которая будет возвращать изменяемую ссылку на значение, содержащееся в значении self . Обычно, поскольку возвращаемые эталоны указывают на данные, которые принадлежат вне функции lookup ( self.verts ),...
395 просмотров
schedule 10.04.2023