Resultados de la búsqueda a petición "borrow-checker"

1 la respuesta

¿Cuál es la forma correcta de implementar el equivalente de múltiples devoluciones de llamada mutables (asignadas estáticamente, despachadas estáticamente, etc.) en Rust?

Tengo el siguiente código de ejemplo, que es la base estándar de las API controladas por eventos en otros lenguajes de programación, pero en Rust el verificador de préstamos lo bloquea con "no puedo tomar prestadop1 como mutable más de una vez a ...

1 la respuesta

¿Es este error debido al conocimiento especial del compilador sobre RefCell?

fn works<'a>(foo: &Option<&'a mut String>, s: &'a mut String) {} fn error<'a>(foo: &RefCell<Option<&'a mut String>>, s: &'a mut String) {} let mut s = "hi".to_string(); let foo = None; works(&foo, &mut s); // with this, it errors // let bar = ...

2 la respuesta

¿Cómo puedo volver mañana a una referencia mutable sin pasarla a una función?

He encontrado un caso en el que la inserción manual de una función cambia la forma en que el verificador de préstamos la trata, de modo que ya no se compila. Presumiblemente se basa en la información en la firma de la función. ¿Cómo ...

1 la respuesta

¿Cómo puedo iterar simultáneamente sobre un Rust HashMap y modificar algunos de sus valores?

Estoy intentando Advent of Code in Rust este año, como una forma de aprender el idioma. Analicé la entrada (desde el día 7) en la siguiente estructura: struct Process { name: String, weight: u32, children: Vec<String>, parent: Option<String> ...

2 la respuesta

¿Cómo actualizar-o-insertar en un Vec?

Estoy escribiendo una estructura de datos en Rust. Contiene unVec de pares clave-valor. Al insertar en la estructura, necesito encontrar una clave coincidente y actualizar tanto la clave como el valor (que en realidad es un puntero secundario). ...

1 la respuesta

"El valor prestado no vive lo suficiente" cuando se usa as_slice ()

Me encontré con un error: extern crate rustc_serialize; // 0.3.24 use rustc_serialize::base64::{self, FromBase64, ToBase64}; fn main() { let a: [u8; 30] = [0; 30]; let b = a.from_base64().unwrap().as_slice(); println!("{:?}", b); }El ...

2 la respuesta

no se puede mover fuera del contenido prestado al desenvolver una variable miembro en un método & mut self

Estaba tratando de hacer una estructura de datos Disjoint-Set en Rust. El código relevante es: pub struct Set<'a, T: 'a> { rank: u32, value: T, parent: Option<&'a mut Set<'a, T>>, } impl<'a, T> Set<'a, T> { pub fn find(&'a mut self) -> &'a mut ...

2 la respuesta

El valor prestado no dura lo suficiente al crear un Vec

Nota del editor: esta pregunta se hizo antes de Rust 1.0. Desde entonces, muchas funciones y tipos han cambiado, al igual que ciertas semánticas del lenguaje. El código en la pregunta ya no es válido, pero las ideas expresadas en las respuestas ...

1 la respuesta

Retomando la propiedad de una referencia mutable pasada a una función que acepta un tipo genérico

¿Por qué no compila este código? fn use_cursor(cursor: &mut io::Cursor<&mut Vec<u8>>) { // do some work } fn take_reference(data: &mut Vec<u8>) { { let mut buf = io::Cursor::new(data); use_cursor(&mut buf); } data.len(); } fn produce_data() { ...

1 la respuesta

Obtenga un campo de enumeración de una estructura: no puede salir del contenido prestado

Soy nuevo en Rust y estoy tratando de entender el concepto de propiedad / préstamo. Ahora he reducido mi código a esta muestra de código mínimo que da un error de compilación. pub struct Display { color: Color, } pub enum Color { Blue = 0x1, Red ...