Вопросы по теме '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 просмотров
schedule
24.02.2022
Каковы лучшие практики для множественных изменяемых и неизменяемых заимствований?
Я разрабатываю функцию, которая возвращает содержимое определенного файла в Zip-архиве. Поскольку мне известно расположение файла, я пытаюсь получить к нему доступ с помощью метода ZipArchive.by_name . Однако возможно, что имя файла написано в...
122 просмотров
schedule
19.02.2022
Двойное эталонное значение ржавчины
Просматриваем bluetooth-библиотеку blurz для Rust.
Объявлена переменная со значением, равным ссылке на временное значение (?).
Затем это значение передается в другую функцию по ссылке.
Как обрабатывается право собственности на переменную, для...
180 просмотров
schedule
08.03.2022
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 просмотров
schedule
02.08.2022
Не удается сохранить ссылки в хэш-карте из-за нескольких изменяемых заимствований?
У меня есть структура 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