Derive Macro frame_support::DefaultNoBound
source · #[derive(DefaultNoBound)]
{
// Attributes available to this derive:
#[default]
}
Expand description
Derive Default
but do not bound any generic.
This is useful for type generic over runtime:
trait Config {
type C: Default;
}
// Foo implements [`Default`] because `C` bounds [`Default`].
// Otherwise compilation will fail with an output telling `c` doesn't implement [`Default`].
#[derive(DefaultNoBound)]
struct Foo<T: Config> {
c: T::C,
}
// Also works with enums, by specifying the default with #[default]:
#[derive(DefaultNoBound)]
enum Bar<T: Config> {
// Bar will implement Default as long as all of the types within Baz also implement default.
#[default]
Baz(T::C),
Quxx,
}
derive Default
but do no bound any generic. Docs are at frame_support::DefaultNoBound
.