Вопросы по теме 'borrow-checker'
Невозможно выйти из заимствованного контента / не может выйти из-за общей ссылки
Я не понимаю ошибку cannot move out of borrowed content . Я получал ее много раз и всегда решал ее, но никогда не понимал почему.
Например:
for line in self.xslg_file.iter() {
self.buffer.clear();
for current_char in...
73828 просмотров
schedule
26.02.2022
Как получить изменяемую структуру из HashMap?
У меня есть хэш-карта для всех моих состояний, которая является HashMap<String, Rc<State>> , и я хочу вызвать член текущего состояния fn init(&mut self) . Но я получаю сообщение об ошибке со следующим кодом:
...
if let...
1368 просмотров
schedule
25.04.2024
Могу ли я создать структуру, которая работает как со значениями, так и с заимствованными ссылками на черту?
Я хочу создать структуру, которая обертывает другой тип, но может принимать как собственные, так и заимствованные версии значений, реализующих данную черту.
Например, допустим, у меня есть черта Foobar :
trait Foobar {
fn...
97 просмотров
schedule
01.03.2022
Как обновить черту Slicable, чтобы проверять заемные средства при повторных вызовах
У меня есть библиотека ввода-вывода с большой структурой State , и я пишу функцию, которая требует двух этапов. На первом этапе затрагивается только класс читателя, но сайт вызова выбирает доступный только для чтения срез таблицы для передачи.
На...
78 просмотров
schedule
14.05.2022
Ошибки компиляции заимствования Rust
Я пытаюсь изучить Rust, написав простой лексер. Вот что у меня пока...
use std::fs::File;
use std::io::Read;
use std::str::Chars;
pub struct Lexer<'a> {
file_name: String,
file_contents: String,
iterator:...
66 просмотров
schedule
06.01.2024
Почему в &mut self разрешено заимствование членов структуры, но не из self в неизменяемые методы?
Если у меня есть структура, которая инкапсулирует два члена и обновляет один на основе другого, это нормально, пока я делаю это следующим образом:
struct A {
value: i64
}
impl A {
pub fn new() -> Self {
A { value: 0 }
}...
823 просмотров
schedule
22.03.2024
Ссылка имеет меньшее время жизни, чем ее значение из той же области?
В моем коде видно, что значение живет дольше, чем ссылка на него, хотя оба они созданы в одной области. Я хотел бы знать, почему и как я могу изменить время жизни моей ссылки.
Пример 1 принимается компилятором ...
let mut rxs:...
72 просмотров
schedule
12.09.2022
Невозможно одолжить Vec внутри закрытия
У меня есть вектор Unit s. Я пытаюсь создать переменную Vec<Vec<Unit>> с именем world . В процессе создания плиток мне нужно знать, какие плитки являются соседними, о которых он знает.
У меня есть функция, которая возвращает...
614 просмотров
schedule
24.10.2022
Что я делаю неправильно в этом коде, чтобы реализовать функцию `dequeue` для очереди?
Я пытаюсь реализовать функцию dequeue для очереди, но не понимаю, как работает средство проверки заимствования. Что я делаю неправильно в этом коде?
use std::cell::RefCell;
use std::rc::Rc;
use std::mem::replace;
type Link<T> =...
380 просмотров
schedule
16.09.2023
Доступ к разным полям одной и той же структуры одновременно и изменчиво [дубликаты]
Я пытаюсь написать карточную игру на Rust, но столкнулся с проблемой проверки заимствований. Мой основной struct — это Game , который выглядит так
struct Game {
players: HashMap<String, Player>,
deck: Vec<Card>,
}...
202 просмотров
schedule
12.06.2022
Средство проверки заимствований не позволяет возвращать изменяемую ссылку из функции обхода дерева
Мне нужно найти узел с максимальным значением в дереве, предполагая, что значения подузла всегда больше, чем значение узла-владельца, а затем изменить его:
#[derive(Debug)]
struct Node {
val: usize,
nodes: Vec<Node>,
}
fn...
289 просмотров
schedule
04.02.2022
Как я могу организовать несколько ссылок на один и тот же объект в Rust с подсчетом ссылок?
У меня есть структура, представляющая полином, и я хочу, чтобы несколько полиномов ссылались на один и тот же объект mutable Aliases . В JavaScript я бы создал экземпляр объекта Aliases и присвоил его p1.aliases , p2.aliases и так далее. В...
1260 просмотров
schedule
08.05.2022
В чем разница между разыменованием необработанного указателя на String и необработанного указателя на i32?
fn func(s: *mut String, a: *mut i32) -> usize {
println!("{}", unsafe { *s });
println!("{}", unsafe { *a });
unsafe { (*s).len() }
}
fn main() {
let mut s = String::from("hello");
let mut a = 10;
func(&mut s,...
1180 просмотров
schedule
31.08.2023
Как изменчиво заимствовать указатель в штучной упаковке при переборе `Vec‹Box‹SomeTrait››`?
У меня есть индивидуальная черта, подобная этой:
pub struct SomeObject;
pub trait Renderer {
fn render(&self) -> Vec<SomeObject>;
}
и модуль с несколькими структурами, реализующими указанную черту. Модуль предоставляет одну...
24 просмотров
schedule
05.12.2022
Что не так с заимствованием себя в классической реализации односвязного списка
Я новичок в огромном мире Rust. Я изучаю его уже неделю, и у меня появилась какая-то концепция, однако что-то не так с моей классической реализацией односвязного списка, и это связано с заимствованием и моим непониманием жизней. Вот код:
use...
103 просмотров
schedule
29.04.2023
Взаимно заимствование в операторе совпадения и результате
Я пытаюсь определить, есть ли в контейнере объект, и вернуть найденный объект, если он есть, или добавить его, если его нет.
Я нашел Rust заимствует изменяемое выражение self внутри выражения соответствия , которое имеет ответ, в котором...
594 просмотров
schedule
03.06.2023
Почему Rust позволяет модифицировать изменяемую структуру после перемещения ее в замыкание?
Что позволяет компилировать следующий фрагмент кода?
#[derive(Debug)]
struct Abc {
x: i32,
}
fn main() {
let mut n = Abc { x: 20 };
let c = &move || {
println!("{:?}", n);
};
(*c)();
n.x = 12; //-> But n is...
55 просмотров
schedule
24.11.2023
Время жизни для метода, возвращающего итератор структур с таким же временем жизни
Предположим следующий надуманный пример:
struct Board {
squares: Vec<i32>,
}
struct Point<'a> {
board: &'a Board,
x: i32,
y: i32,
}
impl<'a> Point<'a> {
pub fn neighbors(&self) -> impl...
601 просмотров
schedule
16.03.2022
совпадение временного члена живет недостаточно долго
Следующий код не компилируется (playground) :
#![allow(unused)]
use std::cell::RefCell;
enum Token {
A,
B,
}
struct Thing {
c: Token,
}
fn main() {
let a = RefCell::new(Thing { c: Token::A });
if let Token::A =...
39 просмотров
schedule
26.12.2023
Не удается выйти из заимствованного содержимого при попытке десериализации hyper :: Request.body ()
Я пытаюсь разобрать тело запроса на строго типизированный объект с помощью serde_json:
#[macro_use]
extern crate serde_derive; // 1.0.70
extern crate futures; // 0.1.23
extern crate hyper; // 0.12.7
extern crate serde_json; // 1.0.24
use...
526 просмотров
schedule
01.03.2024