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

Встраивать заимствованное значение в перечисление?
У меня проблемы со следующим кодом: trait HelloPhrase { fn hello(&self, to: &'static str); } pub enum GetHelloResult<H: HelloPhrase> { Matched(H), NoMatch, } struct English; impl English { pub fn new() ->...
700 просмотров
schedule 11.06.2022

Как добавление фигурных скобок к переменной предотвращает ее заимствование (владение?) совпадением?
Я пытаюсь понять реализация двоичного дерева в Rust и я не могу понять магию области видимости в функции locate_mut : match {anchor} { &mut Some(ref mut node) if key != node.value.key() => { anchor = if key <...
33 просмотров
schedule 13.04.2024

Средство проверки заимствований не позволяет возвращать изменяемую ссылку из функции обхода дерева
Мне нужно найти узел с максимальным значением в дереве, предполагая, что значения подузла всегда больше, чем значение узла-владельца, а затем изменить его: #[derive(Debug)] struct Node { val: usize, nodes: Vec<Node>, } fn...
289 просмотров
schedule 04.02.2022

Равенство строк в Rust: как работают ссылки и разыменование?
Как новичок в Rust, я работаю над проблемами Project Euler , чтобы помочь мне почувствовать язык. Проблема 4 связана с палиндромами, и я нашел два решения для создания вектора палиндромов, но я не уверен, как они работают. Я использую вектор...
2248 просмотров
schedule 06.01.2023

Как исправить заимствованную проблему в программировании на RUST?
Я пытаюсь перебрать вектор в Rust. Я могу распечатать все значения, но когда я беру ссылку на вектор внутри цикла for, я получаю ошибку « значение, заимствованное здесь после перемещения ». Может ли кто-нибудь объяснить мне концепцию владения,...
124 просмотров
schedule 17.04.2023

Есть ли хороший способ сделать копию с перекрытием в ndarray в ржавчине?
Вот что я пробовал use ndarray::{arr2, s}; let mut a = arr2(&[[1, 2, 3], [4, 5, 6]]); let b = arr2(&[[2, 3, 3], [5, 6, 6]]); a.slice_mut(s![.., ..2]).assign(&a.slice_mut(s![.., 1..])); который...
235 просмотров

Почему перебор коллекции с помощью цикла for считается в Rust ходом?
У меня есть программа на Rust ниже. fn main() { let v = vec![100, 32, 57]; for i in v { println!("{}", i); } println!("{:?}", v); } Когда я запускаю его, я получаю: error[E0382]: borrow of moved value: `v` -->...
2082 просмотров
schedule 08.07.2023

Временная стоимость упала во время заимствования, но я не хочу сдавать в аренду
Я делаю примерно так: fn main() { //[1, 0, 0, 0, 99]; // return [2, 0, 0, 0, 99] //[2, 3, 0, 3, 99]; // return [2,3,0,6,99] //[2, 4, 4, 5, 99, 0]; // return [2,4,4,5,99,9801] //[1, 1, 1, 4, 99, 5, 6, 0, 99]; // return...
297 просмотров
schedule 14.04.2022

Чтение байтов из файла и их разбор с помощью библиотеки парсера `pom`
Я пытаюсь написать синтаксический анализатор с pom , и это здорово - нет проблем с написанием синтаксических анализаторов. и подача строкового литерала в качестве тестовых данных. Однако, когда я пытаюсь запустить его байтами из файла, он...
160 просмотров
schedule 08.07.2022

Понимание этого примера времени жизни Rust
Я новичок в Rust и все еще борюсь с жизнями в Rust. Ниже приведен пример из книги, которую я читаю. Может ли кто-нибудь помочь объяснить, почему автор может получить эту информацию, просто взглянув на подпись функции? У меня уже есть базовые...
82 просмотров
schedule 19.05.2022

Как правильно управлять собственностью с помощью заимствования в Rust?
Я новичок в мире Rust и до сих пор не совсем понимаю, как работает владение / заимствование / время жизни. У меня есть этот пример, чтобы продемонстрировать борьбу: struct Node { value: bool, next: Option<Box<Node>> } fn...
156 просмотров
schedule 02.03.2022

Rust не допускает изменяемого заимствования при правильном разделении
struct Test { a: i32, b: i32, } fn other(x: &mut i32, _refs: &Vec<&i32>) { *x += 1; } fn main() { let mut xes: Vec<Test> = vec![Test { a: 3, b: 5 }]; let mut refs: Vec<&i32> = Vec::new();...
379 просмотров
schedule 22.04.2023

Как вернуть связанные итераторы в rust
У меня есть простая структура, которая определяет какое-то сообщение для отправки по сети. struct Message { message_type: u32, user_id: u32, message: Vec<u8>, } И где-то еще я хочу сериализовать его в простую...
242 просмотров
schedule 03.10.2023

Мутабельный заимствование на две части с очисткой
У меня есть объект, который я хочу разделить на две части с помощью изменяемого заимствования, а затем объединить их вместе в исходный объект, когда разделенные ссылки выходят за пределы области видимости. Упрощенный пример ниже предназначен для...
95 просмотров
schedule 31.01.2023

Избегайте одновременного заимствования изменяемого и неизменного
Чтобы добавить элементы двух Vecs, я написал такую ​​функцию, как fn add_components(dest: &mut Vec<i32>, first: &Vec<i32>, second: &Vec<i32>){ for i in 0..first.len() { dest[i] = first[i] + second[i]; } } И...
101 просмотров
schedule 14.12.2022

Rust `Vec` - невозможно заимствовать` Vec` как неизменяемый внутри метода `impl` (ошибка [E0502])
Есть много ответов на вопросы о error[E0502] в Rust, но я не могу понять один конкретный случай. У меня есть struct , и это impl метод, который выглядит так: struct Test { test_vec: Vec<i32>, } impl Test { // other methods... fn...
225 просмотров
schedule 23.03.2024

Вызов вложенных методов с существующими изменяемыми ссылками
Следующий код успешно компилируется: let mut v = vec![1]; let r = &mut v; r.push(r.len()); пока этот не работает: let mut v = vec![1]; let r = &mut v; r.push(v.len()); с ошибкой: error[E0502]: cannot borrow `v` as immutable...
143 просмотров
schedule 02.12.2022

Реализация метода признака, возвращающего ограниченную ссылку на время жизни для принадлежащего типа
Предположим, у меня есть эта структура и эта черта: #[derive(Debug)] pub struct New<T>(T); pub trait AsRefNew<'a> { fn as_ref(&self) -> New<&'a str>; } То есть черта AsRefNew позволяет возвращать ссылку с...
54 просмотров
schedule 24.11.2022

Как получить несколько изменяемых ссылок на элементы в Vec?
У меня большая вложенная структура данных, и я хотел бы выделить несколько частей для передачи для обработки. В конечном итоге я хочу отправить разделы в несколько потоков для обновления, но я хотел бы немного помочить ноги, разбираясь в простом...
612 просмотров