Skip to main content

generate_into_r_vec_element

Function generate_into_r_vec_element 

Source
fn generate_into_r_vec_element(input: &DeriveInput) -> TokenStream
Expand description

Generate the concrete IntoRVecElement impl (issue #1284).

Lights up the single impl<T: IntoRVecElement> IntoR for Vec<T> blanket in miniextendr-api, so -> Vec<MyType> returns compile and produce a VECSXP of external pointers. The impl must be concrete (not a blanket over IntoExternalPtr) because the MatchArg bridge already occupies a blanket on IntoRVecElement and two blankets would collide (E0119) — the same funnel design #[derive(IntoR)] newtypes use (see miniextendr_api::newtype module docs).

GC discipline: ExternalPtr::collect_into_r_list allocates each EXTPTRSXP directly into the already-protected destination list, so no element is ever live-but-unrooted across a later allocation.