¿Cómo escribir un patrón de compilación idiomático con llamadas a métodos encadenados en Rust?

Con base en los siguientes ejemplos, es posible escribir un patrón de compilación con llamadas a métodos encadenados en Rust que pasa por valor o por referencia (con un especificador de vida útil)

¿Es posible crear una macro para implementar métodos de patrón de generador?¿Cómo sobrecargar el método 'nuevo'? (respuesta principal)https://github.com/rust-unofficial/patterns/blob/master/patterns/builder.md

Un patrón de constructor en Rust puede verse más o menos así:

 ui::Button::new()
    .label("Test")
    .align(Align::Center)
    .build();

Al escribir Rid idiomático, ¿hay una fuerte preferencia por uno sobre otro?

¿Hay algún buen ejemplo de cómo escribir esto en Rust?

Respuestas a la pregunta(2)

Su respuesta a la pregunta