Por que existem tipos anônimos únicos em Rust e como trabalhar com eles?
Olá a todos! Comecei a estudar Rust recentemente e tive uma dificuldade de entendimento com o conceito de tipos anônimos. Li que em Rust cada literal de closure tem seu próprio tipo único e não nomeável. Por exemplo, este código:
```rust
let add_one = |x: i32| x + 1;
let double = |x: i32| x * 2;
```
Entendo que `add_one` e `double` são closures diferentes com tipos diferentes. Mas por que isso foi feito? Em C++ ou outras linguagens, posso simplesmente declarar um ponteiro para função ou usar `std::function`. Por que Rust seguiu o caminho de criar tipos anônimos únicos? Parece-me que isso complica a escrita de código genérico, especialmente quando quero passar uma closure para uma função ou armazená-la em uma struct. Por exemplo, não posso simplesmente escrever:
```rust
fn apply(f: ???, x: i32) -> i32 {
f(x)
}
```
Preciso usar genéricos ou `Box`. Isso é normal? Ou estou perdendo algo? Como projetar código considerando essa característica? Agradeço explicações com exemplos.
No answers yet.
Faça login para deixar uma resposta
Blogs
Como passar na entrevista de JavaScript: principais perguntas e respostas
Docker e JavaScript: conteinerização de aplicações Node.js (nível avançado)
Trabalhando com WebAssembly e PHP: nível avançado
Code review em JavaScript: o que verificar para o código não quebrar