Perguntas com a marcação «rust»

Rust é uma linguagem de programação de sistemas sem um coletor de lixo focada em três objetivos: segurança, velocidade e concorrência. Use esta tag para perguntas sobre o código escrito em Rust. Use uma tag específica da edição para perguntas que se refiram ao código que requer uma edição específica, como [rust-2018]. Use tags mais específicas para subtópicos como [rust-cargo] e [rust-macros].



1
Qual é a diferença entre `| _ | movimento assíncrono {} `e` movimento assíncrono | _ | {} `
Vamos considerar os seguintes exemplos: main.rs use futures::executor::block_on; use futures::future::{FutureExt, TryFutureExt}; async fn fut1() -> Result<String, u32> { Ok("ok".to_string()) } fn main() { println!("Hello, world!"); match block_on(fut1().and_then(|x| async move { Ok(format!("{} is \"ok\"", x)) })) { Ok(s) => println!("{}", s), Err(u) => println!("{}", u) }; } Cargo.toml [dependencies] futures = …
10 rust 


1
Por que adicionar um segundo impl impede uma menor coerção do argumento?
Me deparei com esse problema ao tentar adicionar o impl Add<char> for Stringà biblioteca padrão. Mas podemos replicá-lo facilmente, sem travessuras de operador. Começamos com isso: trait MyAdd<Rhs> { fn add(self, rhs: Rhs) -> Self; } impl MyAdd<&str> for String { fn add(mut self, rhs: &str) -> Self { self.push_str(rhs); …


1
Como você habilita um "recurso de caixa" do Rust?
Estou tentando usar rand::SmallRng. A documentação diz Este PRNG possui recursos limitados : para usar, você deve ativar o recurso de caixa small_rng. Eu estive pesquisando e não consigo descobrir como ativar "recursos de caixa". A frase nem é usada em nenhum lugar dos documentos da Rust. Este é o …


1
Std :: ptr :: write transfere o “não inicializado-ness” dos bytes que escreve?
Estou trabalhando em uma biblioteca que ajuda a transacionar tipos que se encaixam em um tamanho de ponteiro int sobre os limites da FFI. Suponha que eu tenha uma estrutura como esta: use std::mem::{size_of, align_of}; struct PaddingDemo { data: u8, force_pad: [usize; 0] } assert_eq!(size_of::<PaddingDemo>(), size_of::<usize>()); assert_eq!(align_of::<PaddingDemo>(), align_of::<usize>()); Essa estrutura …


1
Qual é a melhor maneira de lidar com fechamentos no WebAssembly com Rust em vez de usar esquecer e vazar memória?
Ao fornecer retornos de chamada para JavaScript usando Closures , qual é a melhor maneira de lidar com evitar liberá-los? O guia wasm-bindgen sugere o uso .forget, mas admite que isso é essencialmente vazamento de memória. Normalmente, armazenaríamos o identificador para depois ser descartado no momento apropriado, mas, por enquanto, …

2
Como posso criar identificadores higiênicos no código gerado por macros procedurais?
Ao escrever uma macro_rules!macro declarativa ( ), obtemos automaticamente a higiene da macro . Neste exemplo, declaro uma variável nomeada fna macro e passo um identificador fque se torna uma variável local: macro_rules! decl_example { ($tname:ident, $mname:ident, ($($fstr:tt),*)) => { impl std::fmt::Display for $tname { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) …

2
Quando é garantida a recursão da cauda no Rust?
Linguagem C Na linguagem de programação C, é fácil ter recursão de cauda : int foo(...) { return foo(...); } Apenas retorne como é o valor de retorno da chamada recursiva. É especialmente importante quando essa recursão pode se repetir mil ou até um milhão de vezes. Usaria muita memória …

2
Por que a Vec não implementa a característica Iterator?
Qual é a razão do design para Vec não implementar a Iteratorcaracterística? Ter que sempre chamar iter()todos os vetores e fatias cria linhas de código mais longas. Exemplo: let rx = xs.iter().zip(ys.iter()); em comparação com Scala: val rx = xs.zip(ys)
8 rust 


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.