Resultados da pesquisa a pedido "lifetime"
Quem pegou emprestada uma variável?
Estou brigando com o verificador de empréstimos. Eu tenho duas partes de código semelhantes, uma funcionando como eu esperava e a outra não. Aquele que funciona como eu esperava: mod case1 { struct Foo {} struct Bar1 { x: Foo, } impl Bar1 { fn ...
Anotação vitalícia para argumento de fechamento
Eu gostaria de fazer o seguinte código compilar: struct Provider {} impl Provider { fn get_string<'a>(&'a self) -> &'a str { "this is a string" } } fn main() { let provider = Provider{}; let mut vec: Vec<&str> = Vec::new(); // PROBLEM: how do I ...
Por que adicionar uma vida útil a uma característica com o operador mais (Iterador <Item = & Foo> + 'a) necessário?
Estou aplicando um fechamento no iterador e quero usar o stable, então quero retornar uma caixaIterator. A maneira óbvia de fazer isso é a seguinte: struct Foo; fn into_iterator(myvec: &Vec<Foo>) -> Box<Iterator<Item = &Foo>> ...
"Não é possível inferir uma vida útil apropriada para o padrão devido a requisitos conflitantes" no padrão `ref mut`
struct RefWrap<'a> { wrap: &'a mut Option<String>, } impl<'a> RefWrap<'a> { fn unwrap(&mut self) -> &'a mut String { match *self.wrap { Some(ref mut s) => s, None => panic!(), } } }(Parque ...
É permitido chamar o destruidor explicitamente seguido pelo posicionamento new em uma variável com vida útil fixa?
Eu sei que chamar o destruidor explicitamente pode levar a um comportamento indefinido por causa da chamada do destruidor duplo, como aqui: #include <vector> int main() { std::vector<int> foo(10); foo.~vector<int>(); return 0; // Oops, ...
Vida útil dos objetos em uma coleção no VB.Net
Estou tentando descobrir o tempo de vida do tmpTabPages no seguinte pedaço de código. Vamos supor que o formulário tenha um TabControl vazio chamado MyTabControl, que existe uma coleção de seqüências de caracteres chamada NameCollection. Private ...
Por que recebo um erro vitalício quando uso uma referência mutável em uma estrutura em vez de uma referência imutável?
Esse código funciona bem (Parque infantil [https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=9669d3ea1996b28d7c353f14cc46297c] ): struct F<'a> { x: &'a i32, } impl<'a> F<'a> { fn get<'b>(&'b self) -> &'a i32 { self.x } } fn ...
A variável movida ainda está sendo emprestada após chamar `drop`?
fn main() { let mut x: Vec<&i32> = vec![]; let a = 1; x.push(&a); drop(x); // x.len(); // error[E0382]: use of moved value: `x` } // `a` dropped here while still borrowedO compilador sabedrop() gotasx (como é evidente no erro no ...
Qual é a diferença entre '& self' e '&' a self '?
Recentemente, tive um erro que foi simplesmente resolvido alterando impl<'a> Foo<'a> { fn foo(&'a self, path: &str) -> Boo<'a> { /* */ } }para impl<'a> Foo<'a> { fn foo(&self, path: &str) -> Boo { /* */ } }o que não fazia sentido de acordo com ...
Ao retornar o resultado do consumo de um StdinLock, por que o empréstimo para o stdin foi mantido?
Dada a seguinte função: use std::io::{BufRead, stdin}; fn foo() -> usize { let stdin = stdin(); let stdinlock = stdin.lock(); stdinlock .lines() .count() }Isso falha ao compilar com o seguinte erro: error: `stdin` does not live long enough --> ...