#[drop_with_owned_fields]
Expand description
Annotation required on a type in order for DropWithOwnedFields
to be impl
ementable for it.
The attribute shall then define a
companion struct …ඞFields
,
-
either as an “anonymous”/“private” (sealed) type, then only nameable through the convenience
DestructuredFieldsOf<Self>
type alias and naming abstraction layer;This is the case when feeding it an attribute arg of
as _
.The following, for instance, fails to compile:
ⓘuse ::drop_with_owned_fields::drop_with_owned_fields; #[drop_with_owned_fields(as _)] struct Foo { // … } fn main() { let _: FooFields; // Error }
with:
ⓘerror[E0412]: cannot find type `FooFields` in this scope --> src/_lib.rs:114:12 | 10 | let _: FooFields; // Error | ^^^^^^^^^^ not found in this scope |
-
or, when feeding it an attribute arg of
as $($pub:vis)? struct $FooFieldsName:ident
, as a properly$FooFieldsName
-named, and$pub
-visible, type.use ::drop_with_owned_fields::drop_with_owned_fields; #[drop_with_owned_fields(as pub(crate) struct FooFields)] pub struct Foo { // … } fn main() { let _: FooFields; // ✅ }
See the main crate
docs for more info.