Вопросы по теме 'borrowing'

Как продлить жизнь RefCell's Ref
Я работаю над интерпретатором в Rust для языка программирования. Все шло хорошо, пока я не решил реализовать замыкания, что вызвало огромную головную боль, потому что теперь каждое значение замыкания должно иметь изменяемую ссылку на среду, в которой...
142 просмотров
schedule 28.10.2021

Можете ли вы реализовать математические операции в структурах без явных ссылок или перемещения владения?
Я не могу понять, как иметь чистую математику для структур, не требуя, чтобы значения этих структур копировались повсюду. Если бы вы хотели иметь структуру, над которой можно было бы выполнять математические вычисления, вы бы написали что-то вроде...
265 просмотров
schedule 17.09.2021

Как мне использовать значение, принадлежащее выражению соответствия в Rust?
Я намерен сопоставить значение каждой строки в текстовом файле. Если значение соответствует строке, соответствующий код операции должен быть помещен в вектор. В противном случае я хочу добавить к вектору само значение. Само значение нельзя...
90 просмотров
schedule 07.10.2021

Как изменить переменную Cow, которая использует себя в цикле?
Я пытаюсь удалить все круглые скобки в строке. Не думая об этом слишком сильно, я просто выполняю простую замену регулярного выражения (то есть проблема, о которой идет речь, заключается не в том, чтобы избавиться от произвольных уровней вложенных...
188 просмотров
schedule 16.10.2021

Реализует ли `str`` Borrow ‹str› `?
Я смотрел на черту Borrow<Borrowed> в Rust и понимаю, что мы хотим, чтобы общая функция позволяла использовать аргумент K или его заимствованную форму Q , такую, что K: Borrow<Q> . Если я посмотрю на реализацию String , я вижу, что...
103 просмотров
schedule 23.09.2021

Почему изменение значения изменяемой ссылки с помощью необработанного указателя не нарушает правила псевдонима Rust?
У меня нет особенно четкого понимания правил псевдонима Rust (и, насколько я слышал, они четко не определены), но мне трудно понять, что делает этот пример кода в std::slice документации, хорошо. Повторюсь здесь: let x = &mut [1, 2, 4];...
522 просмотров
schedule 18.02.2022

Не удалось выполнить закрытие, возвращенное из метода, захватывающего переменную-член
Я пытаюсь реализовать метод для структуры, которая возвращает закрытие move , захватывающее один из ее членов. Обоснование состоит в том, что этот член Copy , поэтому замыкание может его скопировать и не должно быть привязано к времени жизни...
56 просмотров

Каковы лучшие практики для множественных изменяемых и неизменяемых заимствований?
Я разрабатываю функцию, которая возвращает содержимое определенного файла в Zip-архиве. Поскольку мне известно расположение файла, я пытаюсь получить к нему доступ с помощью метода ZipArchive.by_name . Однако возможно, что имя файла написано в...
122 просмотров
schedule 19.02.2022

Двойное эталонное значение ржавчины
Просматриваем bluetooth-библиотеку blurz для Rust. Объявлена ​​переменная со значением, равным ссылке на временное значение (?). Затем это значение передается в другую функцию по ссылке. Как обрабатывается право собственности на переменную, для...
180 просмотров

Rust: не может ссылаться на локальную переменную в возвращаемом значении, но локальная переменная передается вызывающей стороне
Написание простого интерпретатора привело меня к битве с программой проверки заимствований. #[derive(Clone, Debug)] struct Context<'a> { display_name: &'a str, parent: Option<Box<Context<'a>>>,...
75 просмотров
schedule 08.04.2022

Как мне создать структуру ссылок на признаки, если один объект может реализовать несколько признаков?
У меня есть структура, которая управляет несколькими датчиками. У меня есть гироскоп, акселерометр, магнитометр, барометр и термометр. Все это черты характера. pub struct SensorManager { barometer: Barometer + Sized, thermometer:...
587 просмотров
schedule 14.05.2022

Проблемы с временем жизни Tuple в ржавчине.
Я пытаюсь реализовать простой парсер для байтового потока. У меня проблемы, когда я хочу повторно использовать объявленную ранее переменную, fn read_data(asn_data: &mut Cursor<&[u8]>) -> Result<(u8, u8, Vec<u8>),...
263 просмотров
schedule 22.05.2022

Изменяемое заимствование объекта внутри Mutex - как провести рефакторинг?
У меня есть следующий шаблон во многих моих функциях: use std::sync::{Arc, Mutex}; struct State { value: i32 } fn foo(data: Arc<Mutex<State>>) { let state = &mut data.lock().expect("Could not lock mutex"); // mutate...
884 просмотров
schedule 26.05.2022

Почему я могу форсировать семантику перемещения ссылок для параметра `&self` метода, но не для параметров функции?
У меня есть две версии функции, предназначенные для одного и того же. Версия 1 - Работает! pub fn example1() { // Make a mutable slice let mut v = [0, 1, 2, 3]; // Make a mutable reference to said slice let mut v_ref = &mut...
141 просмотров
schedule 01.06.2022

Невозможно заимствовать в Rc как изменяемый
Прежде всего, я новичок в Rust :-) Проблема: я хочу создать модуль RestServer, содержащий методы (actix-web) для добавления маршрутов и запуска сервера. struct Route { url: String, request: String, handler: Box<dyn Fn(HttpRequest)...
4554 просмотров
schedule 17.06.2022

явное время жизни требуется при использовании ссылочной переменной в коробочном будущем
Я пытаюсь использовать структуру, созданную в main() , и передать ее функции, которая возвращает упакованный Future . Тем не менее, я сталкиваюсь с проблемами при жизни и заимствованиях и, кажется, не могу решить их чисто. Вот моя структура и...
3404 просмотров
schedule 01.08.2022

Как сохранить clap::ArgMatches в структуре?
Я пытаюсь сохранить clap::ArgMatches в такой структуре: struct Configurator { cli_args: ArgMatches, root_directory: String } Ошибка, которую я получаю: error[E0106]: missing lifetime specifier --> src/configurator.rs:5:15 | 5...
152 просмотров

Не удается сохранить ссылки в хэш-карте из-за нескольких изменяемых заимствований?
У меня есть структура Storage с Box , указывающей на некоторые данные в куче. Эта структура хранения имеет метод, в котором она изменяет себя и возвращает неизменяемую ссылку на свои данные в куче. Я попытался получить эти ссылки в цикле и...
125 просмотров
schedule 29.08.2022

Несколько жизней и перемещение: здесь происходит присваивание заимствованному `x`
У меня есть структура с функцией next() (похожей на итераторы, но не на итератор). Этот метод возвращает следующее состояние после модификации (сохранение исходного состояния). Итак: fn next(&A) -> A . Я начал с простой структуры, где...
147 просмотров
schedule 19.09.2022

Заимствование из собственного бокса внутри кортежа в Rust
Основная цель - получить доступ к собственному ящику, который находится внутри кортежа, например строка из (String, i32) в приведенном ниже коде. Мое первое намерение состояло в том, чтобы использовать привязку let для заимствования из...
578 просмотров
schedule 14.09.2023