Expand description
Marker traits for proc-macro derived types. Marker traits for proc-macro derived types.
These marker traits identify types that have been derived with specific proc-macros. They enable compile-time type checking and blanket implementations.
§Pattern
Each derive macro generates an impl of its corresponding marker trait:
| Derive Macro | Marker Trait |
|---|---|
#[derive(DataFrameRow)] | DataFrameRow |
#[derive(PreferList)] | crate::markers::PrefersList |
#[derive(PreferExternalPtr)] | crate::markers::PrefersExternalPtr |
#[derive(PreferRNativeType)] | crate::markers::PrefersRNativeType |
#[derive(PreferDataFrame)] | crate::markers::PrefersDataFrame |
Traits§
- Data
Frame 👻Payload Fields - Reflection trait for
#[derive(DataFrameRow)]types, used for compile-time collision detection in outerDataFrameRowenums. - Data
Frame Row - Marker trait for types generated by
#[derive(DataFrameRow)]. - Prefers
Data Frame - Marker trait for types that should be converted to R data frames via
IntoR. - Prefers
External Ptr - Marker trait for types that prefer
ExternalPtrconversion. - Prefers
List - Marker trait for types that should be converted to R lists via
IntoR. - PrefersR
Native Type - Marker trait for types that prefer native SEXP conversion.
- Widens
ToF64 - Marker trait for types that can widen to
f64without loss. - Widens
ToI32 - Marker trait for types that can widen to
i32without loss.
Functions§
- assert_
no_ 👻payload_ field_ collision - Compile-time assertion: no element of
fieldsequalsdiscriminant_suffix(the inner-enum’s#[dataframe(tag)]value). - assert_
no_ 👻sibling_ field_ collision - Compile-time assertion: no element of
sibling_colsmatchesconcat!(base, "_", tag). - const_
str_ 🔒eq - Const-eval equality check for two
&strvalues (stable since Rust 1.46).