Resultados da pesquisa a pedido "lifetime"

4 a resposta

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 ...

2 a resposta

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 ...

1 a resposta

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>> ...

1 a resposta

"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 ...

2 a resposta

É 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, ...

4 a resposta

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 ...

1 a resposta

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 ...

2 a resposta

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 ...

1 a resposta

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 ...

2 a resposta

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 --> ...