Articles of herrumbre

¿Paquete Rust con una biblioteca y un binario?

Me gustaría crear un paquete Rust que contenga tanto una biblioteca reutilizable (donde se implementa la mayor parte del progtwig) como un ejecutable que la use. Suponiendo que no haya confundido ninguna semántica en el sistema del módulo Rust, ¿cómo debería ser mi archivo Cargo.toml ?

Error genérico: parámetro de tipo esperado, estructura encontrada

Comencé un nuevo proyecto, donde quiero ser lo más modular posible, con eso quiero decir que me gustaría poder reemplazar algunas partes con otras en el futuro. Esto parece ser un uso perfecto para los traits , en este momento tengo este código: mod parser; mod renderer; mod renderers; use parser::MarkParser; use renderer::MarkRenderer; struct Rustmark […]

El paquete OpenSSL no comstack en Mac OS X 10.11

Intenté instalar el marco de trabajo de Iron para Rust en Mac OS X 10.11.2, pero no funcionó cuando ejecuté la cargo build o la cargo run en la comstackción de las cosas de openssl : failed to run custom build command for `openssl-sys-extras v0.7.4` Process didn’t exit successfully: `/xxx/rust/hello/target/debug/build/openssl-sys-extras-413d6c73b37a590d/build-script-build` (exit code: 101) — stdout […]

¿Cuándo no debería implementar un rasgo para las referencias a los implementadores de ese rasgo?

Si tengo un rasgo y una función que acepta un tipo genérico restringido a ese tipo, todo funciona bien. Si trato de pasar una referencia a ese tipo, obtengo un error de comstackción. trait Trait { fn hello(&self) -> u32; } struct Struct(u32); impl Trait for Struct { fn hello(&self) -> u32 { self.0 } […]

¿Puede una macro Rust crear nuevos identificadores?

Me gustaría crear un par de funciones setter / getter donde los nombres se generen automáticamente en base a un componente compartido, pero no pude encontrar ningún ejemplo de reglas de macros que generen un nuevo nombre. ¿Hay alguna manera de generar código como fn get_$iden() y SomeEnum::XX_GET_$enum_iden ?

¿Cuánto tiempo utilizo para crear estructuras Rust que se referencian cíclicamente?

Me gustaría tener miembros de la estructura que conozcan a sus padres. Esto es aproximadamente lo que trato de hacer: struct Parent { children: Vec<Child>, } struct Child { parent: &’me Parent, i: i32, } fn main() { let mut p = Parent { children: vec![] }; let c1 = Child { parent: &p, i: […]

¿Por qué debería implementar métodos en un rasgo en lugar de como parte del rasgo?

Al tratar de entender mejor el rasgo Any , vi que tiene un bloque impl para el rasgo en sí mismo . No entiendo el propósito de este constructo, o incluso si tiene un nombre específico. Hice un pequeño experimento con un método de rasgo “normal” y un método definido en el bloque impl : […]

Implementé un rasgo para otro rasgo pero no puedo invocar métodos de ambos rasgos

Tengo un rasgo llamado Sleep : pub trait Sleep { fn sleep(&self); } Podría proporcionar una implementación diferente del sleep para cada estructura, pero resulta que la mayoría de las personas duermen de muy pocas maneras. Puedes dormir en una cama: pub trait HasBed { fn sleep_in_bed(&self); fn jump_on_bed(&self); } impl Sleep for HasBed { […]

¿Qué hace que algo sea un “objeto de rasgo”?

Los cambios recientes de Rust han hecho que los “objetos de rasgo” sean más prominentes para mí, pero solo tengo una comprensión nebulosa de lo que realmente convierte a algo en un objeto de rasgo. Un cambio en particular es el próximo cambio para permitir a los objetos de rasgo reenviar las implementaciones de rasgos […]

¿Cuándo un cierre implementa Fn, FnMut y FnOnce?

¿Cuáles son las condiciones específicas para que un cierre implemente los rasgos Fn , FnMut y FnOnce ? Es decir: ¿Cuándo un cierre no implementa el rasgo de FnOnce ? ¿Cuándo un cierre no implementa el rasgo FnMut ? ¿Cuándo un cierre no implementa el rasgo Fn ? Por ejemplo, mutar el estado del cierre […]