Articles of rust

Passando auto-referência mutável para o método de object de propriedade

O seguinte é uma simples simulação com um campo que é uma área retangular com duas bolas saltando ao redor dele. O Field struct possui um método de update , que chama de update em cada uma das bolas. As bolas, no seu método de update , precisam se movimentar com base em sua velocidade. […]

Como há uma implementação conflitante de `From` ao usar um tipo genérico?

Estou tentando implementar um enum de erro que pode conter um erro associado a um de nossos traços como este: trait Storage { type Error; } enum MyError { StorageProblem(S::Error), } Eu também tentei implementar o traço From para permitir a construção do MyError de uma instância de um Storage::Error : impl From for MyError […]

Como testar a igualdade entre objects de traços?

Nota do editor: Este exemplo de código é de uma versão do Rust anterior a 1.0 e não é um código Rust 1.0 sintaticamente válido. Versões atualizadas desse código produzem erros diferentes, mas as respostas ainda contêm informações valiosas. Parece que não podemos testar a igualdade no seguinte caso. Por que é isso? Existe uma […]

Como inicializar campos struct que fazem referência um ao outro

Atualmente, quero definir uma estrutura para um jogo de pistão usando o GamerIterator: pub struct MyGame { game_window: GameWindowGLFW, game_iter: GameIterator, //… } O GameIterator é genérico no GameWindow e sua vida útil. Eu quero dizer ao compilador que ele tem a mesma vida útil do campo “game_window” / “the struct todo” e deixar de […]

Quando um encerramento implementa Fn, FnMut e FnOnce?

Quais são as condições específicas para um encerramento para implementar as características Fn , FnMut e FnOnce ? Isso é: Quando um encerramento não implementa o traço FnOnce ? Quando um encerramento não implementa o traço FnMut ? Quando um encerramento não implementa o traço de Fn ? Por exemplo, a alteração do estado do […]

As variables ​​polimórficas são permitidas?

Eu tenho várias estruturas que implementam o mesmo traço. Eu quero ramificar em alguma condição, decidindo em tempo de execução quais dessas estruturas instanciar. Então, independentemente de qual ramo eu segui, eu quero chamar methods dessa característica. Isso é possível em Rust? Eu estou esperando para conseguir algo como o seguinte (que não compila): trait […]

Qual é o tipo de retorno da operação de indexação?

Estou tentando, sem sucesso, brincar com fatias. Eu reduzi meu primeiro problema para: fn at(slice: &’a [T], index: usize) -> &’a T { let item = slice[index]; item } É minha expectativa que o tipo de retorno da slice[index] seja uma referência, dada a documentação : pub trait Index { type Output; fn index(&’a self, […]

Não é possível sair do conteúdo emprestado ao desembrulhar

Este é o código que estou tentando executar: fn my_fn(arg1: &Option<Box>) -> (i32) { if arg1.is_none() { return 0; } let integer = arg1.unwrap(); *integer } fn main() { let integer = 42; my_fn(&Some(Box::new(integer))); } ( no parquinho rust ) Estou tendo o erro a seguir: error[E0507]: cannot move out of borrowed content –> src/main.rs:5:19 […]

Problemas de vida útil compartilhando referências entre encadeamentos

Eu tenho um segmento que lança segmentos de trabalho, todos devem viver para sempre. Cada thread de trabalho mantém sua própria lista de Socket . Algumas operações requerem que eu percorra todos os sockets atualmente ativos, mas estou tendo problemas com vidas úteis tentando criar uma lista principal de sockets contendo um ponteiro para um […]

Vetor de objects pertencentes a uma característica

Considere o seguinte código: trait Animal { fn make_sound(&self) -> String; } struct Cat; impl Animal for Cat { fn make_sound(&self) -> String { “meow”.to_string() } } struct Dog; impl Animal for Dog { fn make_sound(&self) -> String { “woof”.to_string() } } fn main () { let dog: Dog = Dog; let cat: Cat = […]