Perguntas com a marcação «rust»

102
Divida um módulo em vários arquivos

Quero ter um módulo com várias estruturas, cada uma em seu próprio arquivo. Usando um Mathmódulo como exemplo: Math/ Vector.rs Matrix.rs Complex.rs Quero que cada estrutura esteja no mesmo módulo, que usaria do meu arquivo principal, assim: use Math::Vector; fn main() { // ... } No...

101
Chamadas idiomáticas em Rust

Em C / C ++, eu normalmente faria callbacks com um ponteiro de função simples, talvez passando um void* userdataparâmetro também. Algo assim: typedef void (*Callback)(); class Processor { public: void setCallback(Callback c) { mCallback = c; } void processEvents() { for (...) { ......

100
Como faço para iterar em um intervalo com uma etapa personalizada?

Como posso iterar em um intervalo em Rust com uma etapa diferente de 1? Estou vindo de uma formação C ++, então gostaria de fazer algo como for(auto i = 0; i <= n; i+=2) { //... } Em Rust, preciso usar a rangefunção e não parece que haja um terceiro argumento disponível para ter uma etapa...

96
É possível tornar um tipo apenas móvel e não copiável?

Nota do Editor : esta pergunta foi feita antes do Rust 1.0 e algumas das afirmações na pergunta não são necessariamente verdadeiras no Rust 1.0. Algumas respostas foram atualizadas para atender às duas versões. Eu tenho esta estrutura struct Triplet { one: i32, two: i32, three: i32, } Se...

95
O que é um “ponteiro gordo”?

Já li o termo "apontador gordo" em vários contextos, mas não tenho certeza do que significa exatamente e quando é usado no Rust. O ponteiro parece ter o dobro do tamanho de um ponteiro normal, mas não entendo por quê. Também parece ter algo a ver com objetos de características....

94
Quais são os tipos de ferrugem denotados com um único apóstrofo?

Encontrei vários tipos em Rust denotados com um único apóstrofo: 'static 'r 'a Qual é o significado desse apóstrofo? Talvez seja um modificador de referências ( &)? Digitação genérica específica para referências? Não tenho ideia de onde a documentação para isso está escondida....

93
O que Rust tem em vez de um coletor de lixo?

Eu entendo que Rust não tem um coletor de lixo e estou me perguntando como a memória é liberada quando uma ligação sai do escopo. Portanto, neste exemplo, entendo que Rust recupera a memória alocada para 'a' quando ele sai do escopo. { let a = 4 } O problema que estou tendo com isso, em...

87
O que são vidas não lexicais?

Rust tem um RFC relacionado a tempos de vida não lexicais que foi aprovado para ser implementado na linguagem por um longo tempo. Recentemente , o suporte do Rust a esse recurso melhorou muito e é considerado completo. Minha pergunta é: o que exatamente é uma vida não lexical?...

37
O que é um "tipo fundamental" em Rust?

Em algum lugar, peguei o termo "tipo fundamental" (e seu atributo #[fundamental]) e agora queria aprender mais sobre ele. Lembro-me vagamente de relaxar as regras de coerência em algumas situações. E acho que os tipos de referência são tipos fundamentais. Infelizmente, pesquisar na web não me...

13
Por que o `std :: mem :: drop` não é exatamente o mesmo que o fechamento | _ | () nos limites de características com classificação mais alta?

A implementação de std::mem::dropestá documentada para ser a seguinte: pub fn drop<T>(_x: T) { } Como tal, eu esperaria que o fechamento |_| ()(conhecido coloquialmente como fechamento do vaso sanitário ) fosse um potencial substituto 1: 1 para drop, em ambas as direções. No entanto, o...