Not saying that named parameters are bad, but the builder pattern serves the same purpose and imo it's more ergonomic.
TrainBuilder::new()
.with_electric_motor(true)
.with_width(1.0)
.build()
I don't care about the color of the train or the amount of wheels, I just want the default train with a few changed parameters.
If you do named parameters in rust, you would need to set every parameter. The only way to not set every parameter is to give a special meaning to the Default trait. But that is uncommon to happen in rust. And many structs that could easily derive Default don't.