Resultados da pesquisa a pedido "borrow-checker"

1 a resposta

Recuperando a propriedade de uma referência mutável passada para uma função que aceita um tipo genérico

Por que esse código não compila: 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 a resposta

Qual é a maneira correta de implementar o equivalente a vários retornos de chamada mutáveis (alocados estaticamente, despachados estaticamente etc.) no Rust?

Eu tenho o seguinte código de exemplo, que é a base padrão de APIs orientadas a eventos em outras linguagens de programação, mas no Rust o verificador de empréstimo o bloqueia com "não é possível emprestarp1 mutável mais de uma vez de cada vez ...

2 a resposta

Como atualizar ou inserir em um Vec?

Estou escrevendo uma estrutura de dados no Rust. Contém umVec de pares de valores-chave. Ao inserir na estrutura, preciso encontrar uma chave correspondente e atualizar a chave e o valor (que na verdade é um ponteiro filho). O código se parece um ...

1 a resposta

Por que o parâmetro "empresta" o valor? [duplicado]

Esta pergunta já tem uma resposta aqui: Emprestar argumentos de verificação e função em Rust, correto ou zeloso? [duplicado] [/questions/41421107/borrow-checker-and-function-arguments-in-rust-correct-or-over-zealous] 1 respostaAqui está uma ...

1 a resposta

Como posso iterar simultaneamente sobre um Rust HashMap e modificar alguns de seus valores?

Estou tentando o Advent of Code in Rust este ano, como uma maneira de aprender o idioma. Analisei a entrada (desde o dia 7) na seguinte estrutura: struct Process { name: String, weight: u32, children: Vec<String>, parent: Option<String> }Estes ...

2 a resposta

Como atribuir à variável usada na expressão de correspondência dentro de um ramo de correspondência?

Estou tentando implementar uma função geraljoin() que pode funcionar em qualquer iterador de iteradores. Estou com um problema com o verificador de empréstimo em ummatch expressão dentro donext() implementação de método. Aqui está uma ...

1 a resposta

O erro de empréstimo mutável duplo em um loop ocorre mesmo com o NLL ativado

Suponha que eu tenha várias estruturas, como no exemplo a seguir e nonext() método Eu preciso puxar o próximo evento usando um buffer fornecido pelo usuário, mas se esse evento for um comentário e o sinalizador de ignorar comentários estiver ...

1 a resposta

Não é possível emprestar mutuamente dentro de dois fechamentos diferentes no mesmo escopo

Meu objetivo é criar uma função (especificamente, floodfill) que funcione independentemente da estrutura de dados subjacente. Tentei fazer isso passando em dois fechamentos: um para consulta, que empresta alguns dados imutávelmente, e outro para ...

1 a resposta

Por que posso retornar uma referência a um literal local, mas não a uma variável?

Por que esse código é compilado? fn get_iter() -> impl Iterator<Item = i32> { [1, 2, 3].iter().map(|&i| i) } fn main() { let _it = get_iter(); }[1, 2, 3] é uma variável local eiter() pede emprestado. Este código não deve ser compilado porque o ...

1 a resposta

“O valor emprestado não vive o suficiente” ao usar as_slice ()

Eu encontrei um erro: 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); }O ...