Вопросы по теме '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 просмотров
schedule
01.01.2023
Почему перебор коллекции с помощью цикла 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 просмотров
schedule
19.10.2022