fn field_reader_capable(rf: &ResolvedField) -> boolExpand description
True if a resolved struct field can be read back out of an R data.frame.
Determines whether the struct gets a generated try_from_dataframe reader.
Each shape’s reader is the inverse of its column-expansion write rule:
Singlescalar: one column read asVec<ty>(excludesas_listand opaque set/collection columns — those classify asSinglebut lackVec<_>: TryFromSexp).Singlemap column (HashMap<String, V>/BTreeMap<String, V>): one VECSXP list-of-named-lists column read whole viaVec<map>: TryFromSexp— the exact inverse of theVec<map>: IntoRwrite shape (#764). Gated toStringkeys + reader-scalar values at resolve time (map_reader).Singleowned list-column:Vec<scalar>/Box<[scalar]>stored as a VECSXP list-column; the reader deserialises each row’s element viaVec<elem>: TryFromSexpand.into()-converts to the field type (#809).ExpandedFixed([T; N]):Ncolumns regrouped into the array.ExpandedVec/AutoExpandVec(Vec<T>): suffixedOptioncolumns flattened back per row (bare-scalar elements only).Struct(nestedDataFrameRow): always eligible — the reader routes the un-prefixed sub-frame through the inner type’sDataFrameRowConvert, which degrades to a clear runtime error if the inner shape itself has no reader.
Borrowed expansion origins (&[T] / &[T; N]) are not readable (owned R data
can’t produce a borrow) — flagged via readable at resolve time.