Публикации по теме '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 просмотров
schedule
25.09.2022
Не удается выйти из заимствованного содержимого при суммировании аргументов командной строки
Это моя первая программа на 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 просмотров
schedule
28.07.2022
Как сообщить компилятору 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