I can't wait to see how people use default field values in #Rust!
It felt like an eternity to land this (specially if we count the years of discussion before the, I believe, 3rd RFC was accepted), but as of next nightly you will be able to write
struct Foo {
bar: Type = Type::const_method(),
}
Foo { .. } // implicit `bar: Type::const_method()` call
The main difference between https://github.com/rust-lang/rust/pull/129514 and derive(Default) is that the latter doesn't support having mandatory fields.
#RustLang
Default fields values are now live on nightly #Rust! Go wild and report bugs
@piggo @ekuber I believe it's more of a language feature than an extension for `Default`. Check out the RFC: https://rust-lang.github.io/rfcs/3681-default-field-values.html
@piggo You can't use traits to encode "some of these fields are mandatory". Default is all are optional. The normal state is all are mandatory. This feature sits in the middle.
@ekuber Really appreciating this, it's basically eliminated all my manual Default implementations
@ekuber looks nice but isn't this just less boilerplate?
@psyhackological isn't it all? Who needs for when you have while? Who needs if let when you have match?
@ekuber So good. :) Combined with #[non_exhaustive], the ".." syntax is a now very convenient way to maintain API compatibility. Typing "..Default::default()" was driving me nuts. :)