Вопросы по теме 'borrowing'
Заимствование T в Rc‹RefCell‹T››
Я пытаюсь сделать что-то вроде этого
use std::cell::{RefCell,Ref,RefMut};
use std::rc::Rc;
struct Entity;
struct Tile {
entity: Option<Rc<RefCell<Entity>>>
}
impl Tile {
pub fn try_read_entity<'a>(&'a self)...
1074 просмотров
schedule
28.03.2023
Как я могу написать строитель, который хранит путь?
Аргумент Path можно было бы сразу преобразовать в PathBuf , но это кажется неэффективным. Должен же быть какой-то способ сохранить только Path , верно?
use std::{fs::File, path::Path};
struct Foo {
a: Option<File>,
b:...
330 просмотров
schedule
20.11.2022
Мешают ли правила заимствования Rust функциональным структурам данных?
Функциональные структуры данных (такие как Hash Array Mapped Trie, используемая в Haskell/Clojure/Scala) основаны на большом количестве общего доступа к базовой структуре данных. Например, если мы реализуем insert для типа данных, подобного карте,...
1061 просмотров
schedule
22.06.2023
Как дублировать фрагмент &[u8]?
Как скопировать содержимое фрагмента &[u8] ?
Я пытаюсь написать функцию, которая принимает буфер в качестве входных данных и выполняет XOR для каждого байта с заданным ключом и возвращает окончательный результат.
Я не хочу, чтобы он искажал...
4104 просмотров
schedule
11.11.2022
Как клонировать последний элемент из изменяемого вектора, а затем передать значение вектору в Rust?
Как клонировать последний элемент из изменяемого вектора, а затем передать значение в вектор в Rust?
fn ElementsFromPoint(&self, ...) -> Vec<Root<Element>> {
let mut elements: Vec<Root<Element>> =...
242 просмотров
schedule
08.11.2023
Как мне реструктурировать код графа, чтобы избежать ошибки «Невозможно заимствовать переменную» как изменяемой более одного раза?
У меня есть простой график, который успешно компилируется:
use std::collections::HashMap;
type Key = usize;
type Weight = usize;
#[derive(Debug)]
pub struct Node<T> {
key: Key,
value: T,
}
impl<T> Node<T> {
fn...
446 просмотров
schedule
29.03.2023
Циклическая ссылка RefCell заимствует при обходе
Я изучаю Rust и пробовал написать двусвязный список. Однако я уже застрял на типичной реализации итеративного обхода. У меня сложилось впечатление, что средство проверки заимствований / проверки перетаскивания слишком строгое и не может сделать...
352 просмотров
schedule
07.02.2023
Разыменование строк и HashMaps в Rust
Я пытаюсь понять, как HashMaps работают в Rust, и я придумал этот пример.
use std::collections::HashMap;
fn main() {
let mut roman2number: HashMap<&'static str, i32> = HashMap::new();
roman2number.insert("X", 10);...
5853 просмотров
schedule
21.12.2022
Как сделать изменяемый указатель на поле узла дерева и изменить его?
Я хочу найти какой-то узел в дереве и мне нужен указатель на контейнер узлов: &mut Vec<Node>
struct Node {
c: Vec<Node>,
v: i32,
}
impl Node {
pub fn new(u: i32, n: Node) -> Node {
let mut no = Node {...
316 просмотров
schedule
05.06.2023
Несколько владельцев для элементов списка Rust (владелец списка и несколько рефереров) - возможно?
У нас есть структура с LinkedList :
struct XPipeline {
handlers: LinkedList<XHandler>,
}
XPipeline является владельцем всех XHandler объектов и может обращаться к ним и изменять их.
У нас уже есть список обработчиков;...
832 просмотров
schedule
15.07.2022
Невозможно вернуть вектор фрагментов строки: заимствованное значение не живет достаточно долго
Я новичок в Rust, и у меня проблемы с программой проверки заимствований. Я не понимаю, почему этот код не компилируется. Извините, если это близко к ранее отвеченному вопросу, но я не могу найти решение по другим вопросам, на которые я смотрел.
Я...
1458 просмотров
schedule
30.07.2023
Несколько самостоятельных займов
Я изучаю Rust и пытаюсь написать простой лексер. У меня есть функция next_token в блоке impl , которая считывает следующий токен из итератора входных символов. Однако код не будет собран из-за многократного заимствования self. Как мне обойти...
143 просмотров
schedule
20.06.2023
Почему трейты для перегрузки операторов требуют владения собой?
Почему я не могу просто использовать &self в признаке Add :
pub trait Add<RHS = Self> {
type Output;
fn add(self, rhs: RHS) -> Self::Output;
}
Таким образом, мне не нужно беспокоиться о перемещении моей структуры после...
44 просмотров
schedule
14.07.2022
Как несколько потоков могут совместно использовать итератор?
Я работал над функцией, которая будет копировать кучу файлов из источника в место назначения, используя Rust и потоки. У меня возникают проблемы с тем, чтобы потоки использовали итератор. Я до сих пор не привык к системе заимствований:
extern...
1675 просмотров
schedule
03.07.2022
Как изменить заимствованный HashMap после возврата одной ветки из функции?
Я попытался упростить свою программу, но ошибки не возникает, если я использую простой HashMap<u16, u16> вместо вложенного класса HashMap Polynome .
Вам понадобятся эти импорты, чтобы воспроизвести проблему:
use...
50 просмотров
schedule
14.04.2023
Как я могу исправить эти два цикла for, чтобы разрешить изменение векторного содержимого?
Я пытаюсь сделать цикл по матрице, созданной с использованием Vec<f64> внутри Vec, а затем изменить ее элементы один за другим.
Я не могу заставить его работать; Я все еще слишком запутался в синтаксисе...
extern crate rand;
use...
170 просмотров
schedule
06.04.2023
Невозможно заимствовать из RefCell‹FnMut›
У меня проблема с фрагментом кода, и я не понимаю, в чем проблема
use std::rc::Rc;
use std::cell::RefCell;
struct Order {
id: u64,
}
fn main() {
respond(
Order { id: 0 },
Rc::new(RefCell::new(|ord| {
ord;...
115 просмотров
schedule
14.10.2022
Перебор рекурсивной структуры с использованием изменяемых ссылок и возвращение последней действительной ссылки
Я пытаюсь выполнить рекурсию вниз по структуре узлов, модифицируя их, а затем возвращаю последний Node , до которого добрался. Я решил проблемы с изменяемыми ссылками в цикле, используя пример в нелексическом RFC . Если я попытаюсь вернуть...
543 просмотров
schedule
14.10.2022
Почему строки из записей csv::Reader не живут достаточно долго при вставке в HashMap?
Я новичок в концепции всей жизни Rust. Я пытаюсь прочитать некоторые данные из файлов CSV и поместить их в HashMap :
extern crate csv;
use std::collections::HashMap;
fn main() {
let files = vec!["file1.csv", "file2.csv", "file3.csv"];...
135 просмотров
schedule
30.03.2023
Почему заимствования не разрешены в аргументе изменяемой функции
Название, вероятно, немного сбивает с толку, я имею в виду, что когда я пытаюсь скомпилировать:
if folder_file_paths.len() > compressed_data.len() {
compressed_data.reserve(folder_file_paths.len() - compressed_data.len() );
}
Я получаю...
37 просмотров
schedule
21.02.2024