3 ms·
You're missing the point. Here's a good article that talks about the problems of having neither overloading nor default parameters, but in Go.[1] The problem is
by identity0 6y ago
You're missing the point. Here's a good article that talks about the problems of having neither overloading nor default parameters, but in Go.[1] The problem is made significantly worse in Rust when all struct fields need to be initialized and there are no varargs. I really see no solution to the "stable API with more options" problem in Rust, aside from a builder pattern, which I really hate.
1: https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis https://dave.cheney.net/2014/10/17/functional-options-for-fr...
- svnpenn 6y agoIn Go, you can use an interface to implement private struct fields. Then you can make a "New" function to implement default values as needed. I made a post about this last month: https://stackoverflow.com/a/63552596 https://stackoverflow.com/a/63552596
- estebank 6y agoWhy do you have the builder pattern (other than the verbosity of declaring them)? I normally just leverage a couple of features: Derive(default) to have an "empty" initialized value and the struct field filling syntax let x = Foo { field_i_care_about, ..Default::default() };