Articles of rust

Como faço para criar um literal HashMap?

Como posso criar um literal HashMap em Rust? Em Python eu posso fazer assim: hashmap = { ‘element0’: { ‘name’: ‘My New Element’, ‘childs’: { ‘child0’: { ‘name’: ‘Child For Element 0’, ‘childs’: { … } } } }, … } E em Go assim: type Node struct { name string childs map[string]Node } hashmap […]

Qual é a diferença entre iter e into_iter?

Eu estou fazendo o tutorial Rust by Example, que tem este trecho de código: // Vec example let vec1 = vec![1, 2, 3]; let vec2 = vec![4, 5, 6]; // `iter()` for vecs yields `&i32`. Destructure to `i32`. println!(“2 in vec1: {}”, vec1.iter() .any(|&x| x == 2)); // `into_iter()` for vecs yields `i32`. No destructuring […]

Como um programa Rust pode acessar os metadados de seu pacote Cargo?

Como você acessa os metadados de um pacote Cargo (por exemplo, versão) do código Rust no pacote? No meu caso, estou construindo uma ferramenta de linha de comando que gostaria de ter um sinalizador de versão padrão, e gostaria que a implementação lesse a versão do pacote do Cargo.toml para que eu não precise mantenha-o […]

Pacote de rust com uma biblioteca e um binário?

Eu gostaria de fazer um pacote de rust que contém uma biblioteca reutilizável (onde a maioria do programa é implementado) e também um executável que o usa. Supondo que eu não tenha confundido qualquer semântica no sistema do módulo Rust, como deve ser meu arquivo Cargo.toml ?

Como terminar um empréstimo em uma partida ou se deixar a expressão?

Eu estou usando um HashMap para armazenar um enum. Eu gostaria de obter um valor do HashMap e se o valor é uma variante enum específica, gostaria de inserir uma cópia modificada do valor de volta no HashMap . O código que eu criei é assim: if let Node::LeafNode(mut leaf_node) = *(self.pages.get(&page).unwrap()) { let mut […]

Inicializar uma matriz grande de tamanho fixo com tipos não-Copiar

Eu estou tentando inicializar uma matriz de tamanho fixo de algum tipo anulável, não copiável, como uma Option<Box> para algum tipo de Thing . Eu gostaria de empacotar dois deles em uma estrutura sem qualquer indireção extra. Eu gostaria de escrever algo assim: let array: [Option<Box>; SIZE] = [None; SIZE]; Mas isso não funciona porque […]

Por que meu programa Rust é mais lento que o programa Java equivalente?

Eu estava brincando com serialização binária e desserialização em Rust e notei que a desserialização binária é várias ordens de magnitude mais lenta do que com Java. Para eliminar a possibilidade de sobrecarga devido a, por exemplo, alocações e overheads, estou simplesmente lendo um stream binário de cada programa. Cada programa lê a partir de […]

O que significa “tipos incompatíveis: esperados` () `” ao usar uma expressão if?

Eu tentei implementar fizzbuzz em Rust e falhei com algum erro arcano: fn main() { let mut i = 1; while i < 100 { println!( "{}{}{}", if i % 3 == 0 { "Fizz" }, if i % 5 == 0 { "Buzz" }, if !(i % 3 == 0 || i % 5 […]

Erro genérico: parâmetro de tipo esperado, struct encontrado

Comecei um novo projeto, onde quero ser o mais modular possível, com isso quero dizer que gostaria de poder replace algumas peças por outras no futuro. Este parece ser um uso perfeito para traits , no momento eu tenho este código: mod parser; mod renderer; mod renderers; use parser::MarkParser; use renderer::MarkRenderer; struct Rustmark { parser: […]

não pode emprestar `self.x` como imutável porque` * self` também é emprestado como mutável

Primeiro, deixe o código falar: #[derive(Debug)] struct Bar; #[derive(Debug)] struct Qux { baz: bool } #[derive(Debug)] struct Foo { bars: Vec, qux: Qux, } impl Foo { fn get_qux(&mut self) -> &mut Qux { &mut self.qux } fn run(&mut self) { // 1. Fails: let mut qux = self.get_qux(); // 2. Works: // let mut […]