1use proc_macro2::TokenStream;
7use quote::{ToTokens, format_ident, quote};
8use syn::{DeriveInput, Fields};
9
10use super::{
11 ColumnRegistry, DataFrameAttrs, EnumAutoExpandVecData, EnumExpandedFixedData,
12 EnumExpandedVecData, EnumMapFieldData, EnumResolvedField, EnumSingleFieldData,
13 EnumStructFieldData, FieldTypeKind, ResolvedColumn, VariantInfo, VariantShape,
14 classify_field_type, companion_debug_clone, companion_lifetime_marker, expanded_elem_idents,
15 field_is_borrowed_ref, fixed_array_elems, from_rows_par_override, is_bare_reader_scalar_ty,
16 is_raw_scalar_ty, is_reader_scalar_ty, list_column_fn, option_payload, owned_elems_iter,
17 parallel_columns_impl, parse_field_attrs, raw_na_column_error, width_elems,
18};
19use crate::naming;
20use std::collections::HashMap;
21
22pub(super) fn derive_enum_dataframe(
63 row_name: &syn::Ident,
64 input: &DeriveInput,
65 data: &syn::DataEnum,
66 df_name: &syn::Ident,
67 attrs: &DataFrameAttrs,
68) -> syn::Result<TokenStream> {
69 let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
70
71 if data.variants.is_empty() {
73 return Err(syn::Error::new_spanned(
74 row_name,
75 "DataFrameRow requires at least one variant",
76 ));
77 }
78
79 let mut variant_infos: Vec<VariantInfo> = Vec::new();
80
81 for variant in &data.variants {
82 match &variant.fields {
83 Fields::Named(fields) => {
84 let mut resolved = Vec::new();
85 let mut skipped = Vec::new();
86 for f in &fields.named {
87 let fa = parse_field_attrs(f)?;
88 let rust_name = f.ident.as_ref().unwrap().clone();
89 if fa.skip {
90 skipped.push(rust_name);
91 continue;
92 }
93 let col_name_str = fa
94 .rename
95 .unwrap_or_else(|| crate::naming::ident_name(&rust_name));
96 let binding = match ::quote::__private::IdentFragmentAdapter(&crate::naming::unraw(&rust_name))
{
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__v_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__v_{}", crate::naming::unraw(&rust_name));
97
98 if fa.as_list {
99 let needs_into_list = #[allow(non_exhaustive_omitted_patterns)] match classify_field_type(&f.ty).as_ref().ok()
{
Some(FieldTypeKind::Struct { .. }) => true,
_ => false,
}matches!(
109 classify_field_type(&f.ty).as_ref().ok(),
110 Some(FieldTypeKind::Struct { .. })
111 );
112 resolved.push(EnumResolvedField::Single(Box::new(EnumSingleFieldData {
113 col_name: crate::naming::name_ident(&col_name_str),
114 binding: binding.clone(),
115 rust_name: rust_name.clone(),
116 ty: f.ty.clone(),
117 needs_into_list,
118 is_factor: false,
119 })));
120 } else if fa.as_factor {
121 super::validate_factor_field_type(&f.ty)?;
122 resolved.push(EnumResolvedField::Single(Box::new(EnumSingleFieldData {
123 col_name: crate::naming::name_ident(&col_name_str),
124 binding: binding.clone(),
125 rust_name: rust_name.clone(),
126 ty: f.ty.clone(),
127 needs_into_list: false,
128 is_factor: true,
129 })));
130 } else {
131 if let Some(error) =
132 raw_variant_column_error(&f.ty, fa.width.is_some() || fa.expand)
133 {
134 return Err(error);
135 }
136 match classify_field_type(&f.ty)? {
137 FieldTypeKind::FixedArray(elem_ty, len) => {
138 resolved.push(EnumResolvedField::ExpandedFixed(Box::new(
139 EnumExpandedFixedData {
140 base_name: col_name_str,
141 binding: binding.clone(),
142 rust_name: rust_name.clone(),
143 elem_ty: elem_ty.clone(),
144 len,
145 borrowed: field_is_borrowed_ref(&f.ty),
146 },
147 )));
148 }
149 FieldTypeKind::VariableVec(elem_ty)
150 | FieldTypeKind::BoxedSlice(elem_ty)
151 | FieldTypeKind::BorrowedSlice(elem_ty) => {
152 if let Some(width) = fa.width {
153 resolved.push(EnumResolvedField::ExpandedVec(Box::new(
154 EnumExpandedVecData {
155 base_name: col_name_str,
156 binding: binding.clone(),
157 rust_name: rust_name.clone(),
158 elem_ty: elem_ty.clone(),
159 width,
160 borrowed: field_is_borrowed_ref(&f.ty),
161 },
162 )));
163 } else if fa.expand {
164 resolved.push(EnumResolvedField::AutoExpandVec(Box::new(
165 EnumAutoExpandVecData {
166 base_name: col_name_str,
167 binding: binding.clone(),
168 rust_name: rust_name.clone(),
169 elem_ty: elem_ty.clone(),
170 container_ty: f.ty.clone(),
171 borrowed: field_is_borrowed_ref(&f.ty),
172 },
173 )));
174 } else {
175 resolved.push(EnumResolvedField::Single(Box::new(
176 EnumSingleFieldData {
177 col_name: crate::naming::name_ident(&col_name_str),
178 binding: binding.clone(),
179 rust_name: rust_name.clone(),
180 ty: f.ty.clone(),
181 needs_into_list: false,
182 is_factor: false,
183 },
184 )));
185 }
186 }
187 FieldTypeKind::Map { key_ty, val_ty } => {
188 if fa.width.is_some() {
189 return Err(syn::Error::new_spanned(
190 &f.ty,
191 "`width` is not valid on HashMap/BTreeMap fields",
192 ));
193 }
194 if fa.expand {
195 return Err(syn::Error::new_spanned(
196 &f.ty,
197 "`expand`/`unnest` is not valid on HashMap/BTreeMap fields",
198 ));
199 }
200 resolved.push(EnumResolvedField::Map(Box::new(EnumMapFieldData {
201 base_name: col_name_str,
202 binding: binding.clone(),
203 rust_name: rust_name.clone(),
204 key_ty: key_ty.clone(),
205 val_ty: val_ty.clone(),
206 map_ty: f.ty.clone(),
207 })));
208 }
209 FieldTypeKind::Struct { inner_ty } => {
210 if fa.width.is_some() {
211 return Err(syn::Error::new_spanned(
212 &f.ty,
213 "`width` is not valid on struct fields; use \
214 `#[dataframe(as_list)]` to keep as an opaque list-column",
215 ));
216 }
217 if fa.expand {
218 return Err(syn::Error::new_spanned(
219 &f.ty,
220 "`expand`/`unnest` is not valid on struct fields; struct \
221 fields flatten by default via their `DataFrameRow` impl",
222 ));
223 }
224 resolved.push(EnumResolvedField::Struct(Box::new(
225 EnumStructFieldData {
226 base_name: col_name_str,
227 binding: binding.clone(),
228 rust_name: rust_name.clone(),
229 inner_ty: inner_ty.clone(),
230 },
231 )));
232 }
233 FieldTypeKind::Scalar => {
234 resolved.push(EnumResolvedField::Single(Box::new(
235 EnumSingleFieldData {
236 col_name: crate::naming::name_ident(&col_name_str),
237 binding: binding.clone(),
238 rust_name: rust_name.clone(),
239 ty: f.ty.clone(),
240 needs_into_list: false,
241 is_factor: false,
242 },
243 )));
244 }
245 FieldTypeKind::OptionScalar => {
246 return Err(option_scalar_in_variant_error(&f.ty));
247 }
248 }
249 }
250 }
251 {
271 let flat_col_names: Vec<String> = resolved
273 .iter()
274 .filter_map(|r| match r {
275 EnumResolvedField::Single(d) => Some(d.col_name.to_string()),
276 EnumResolvedField::Map(d) => {
277 let _ = d;
282 None
283 }
284 _ => None,
285 })
286 .collect();
287
288 for r in &resolved {
289 if let EnumResolvedField::Struct(struct_data) = r {
290 let discriminant_col = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_variant",
struct_data.base_name))
})format!("{}_variant", struct_data.base_name);
294 if flat_col_names.contains(&discriminant_col) {
295 let colliding_span = resolved
297 .iter()
298 .find_map(|r2| match r2 {
299 EnumResolvedField::Single(d)
300 if d.col_name == discriminant_col.as_str() =>
301 {
302 Some(d.col_name.span())
303 }
304 _ => None,
305 })
306 .unwrap_or_else(proc_macro2::Span::call_site);
307 return Err(syn::Error::new(
308 colliding_span,
309 ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("column name collision: the flatten field `{0}` (a nested `DataFrameRow` enum) will emit a discriminant column named `{1}`, but a sibling field already produces a column with the same name. Rename the sibling field or use `#[dataframe(tag = \"...\")]` on the inner enum to choose a different discriminant column name (e.g. `#[dataframe(tag = \"type\")]` → `{0}_type`)",
struct_data.base_name, discriminant_col))
})format!(
310 "column name collision: the flatten field `{base}` \
311 (a nested `DataFrameRow` enum) will emit a \
312 discriminant column named `{disc}`, but a sibling \
313 field already produces a column with the same name. \
314 Rename the sibling field or use \
315 `#[dataframe(tag = \"...\")]` on the inner enum to \
316 choose a different discriminant column name \
317 (e.g. `#[dataframe(tag = \"type\")]` → `{base}_type`)",
318 base = struct_data.base_name,
319 disc = discriminant_col,
320 ),
321 ));
322 }
323 }
324 }
325 }
326 variant_infos.push(VariantInfo {
327 name: variant.ident.clone(),
328 shape: VariantShape::Named,
329 fields: resolved,
330 skipped_fields: skipped,
331 });
332 }
333 Fields::Unnamed(fields) => {
334 let mut resolved = Vec::new();
335 for (i, f) in fields.unnamed.iter().enumerate() {
336 let fa = parse_field_attrs(f)?;
337 let rust_name = match ::quote::__private::IdentFragmentAdapter(&i) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("_{}", i);
338 if fa.skip {
339 continue;
340 }
341 let col_name_str = fa
342 .rename
343 .unwrap_or_else(|| crate::naming::ident_name(&rust_name));
344 let binding = match ::quote::__private::IdentFragmentAdapter(&crate::naming::unraw(&rust_name))
{
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__v_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__v_{}", crate::naming::unraw(&rust_name));
345
346 if fa.as_list {
348 let needs_into_list = #[allow(non_exhaustive_omitted_patterns)] match classify_field_type(&f.ty).as_ref().ok()
{
Some(FieldTypeKind::Struct { .. }) => true,
_ => false,
}matches!(
352 classify_field_type(&f.ty).as_ref().ok(),
353 Some(FieldTypeKind::Struct { .. })
354 );
355 resolved.push(EnumResolvedField::Single(Box::new(EnumSingleFieldData {
356 col_name: crate::naming::name_ident(&col_name_str),
357 binding,
358 rust_name,
359 ty: f.ty.clone(),
360 needs_into_list,
361 is_factor: false,
362 })));
363 } else if fa.as_factor {
364 super::validate_factor_field_type(&f.ty)?;
365 resolved.push(EnumResolvedField::Single(Box::new(EnumSingleFieldData {
366 col_name: crate::naming::name_ident(&col_name_str),
367 binding,
368 rust_name,
369 ty: f.ty.clone(),
370 needs_into_list: false,
371 is_factor: true,
372 })));
373 } else {
374 if let Some(error) =
375 raw_variant_column_error(&f.ty, fa.width.is_some() || fa.expand)
376 {
377 return Err(error);
378 }
379 match classify_field_type(&f.ty)? {
380 FieldTypeKind::FixedArray(elem_ty, len) => {
381 resolved.push(EnumResolvedField::ExpandedFixed(Box::new(
382 EnumExpandedFixedData {
383 base_name: col_name_str,
384 binding,
385 rust_name,
386 elem_ty: elem_ty.clone(),
387 len,
388 borrowed: field_is_borrowed_ref(&f.ty),
389 },
390 )));
391 }
392 FieldTypeKind::VariableVec(elem_ty)
393 | FieldTypeKind::BoxedSlice(elem_ty)
394 | FieldTypeKind::BorrowedSlice(elem_ty) => {
395 if let Some(width) = fa.width {
396 resolved.push(EnumResolvedField::ExpandedVec(Box::new(
397 EnumExpandedVecData {
398 base_name: col_name_str,
399 binding,
400 rust_name,
401 elem_ty: elem_ty.clone(),
402 width,
403 borrowed: field_is_borrowed_ref(&f.ty),
404 },
405 )));
406 } else if fa.expand {
407 resolved.push(EnumResolvedField::AutoExpandVec(Box::new(
408 EnumAutoExpandVecData {
409 base_name: col_name_str,
410 binding,
411 rust_name,
412 elem_ty: elem_ty.clone(),
413 container_ty: f.ty.clone(),
414 borrowed: field_is_borrowed_ref(&f.ty),
415 },
416 )));
417 } else {
418 resolved.push(EnumResolvedField::Single(Box::new(
419 EnumSingleFieldData {
420 col_name: crate::naming::name_ident(&col_name_str),
421 binding,
422 rust_name,
423 ty: f.ty.clone(),
424 needs_into_list: false,
425 is_factor: false,
426 },
427 )));
428 }
429 }
430 FieldTypeKind::Map { key_ty, val_ty } => {
431 if fa.width.is_some() {
432 return Err(syn::Error::new_spanned(
433 &f.ty,
434 "`width` is not valid on HashMap/BTreeMap fields",
435 ));
436 }
437 if fa.expand {
438 return Err(syn::Error::new_spanned(
439 &f.ty,
440 "`expand`/`unnest` is not valid on HashMap/BTreeMap fields",
441 ));
442 }
443 resolved.push(EnumResolvedField::Map(Box::new(EnumMapFieldData {
444 base_name: col_name_str,
445 binding,
446 rust_name,
447 key_ty: key_ty.clone(),
448 val_ty: val_ty.clone(),
449 map_ty: f.ty.clone(),
450 })));
451 }
452 FieldTypeKind::Struct { inner_ty } => {
453 if fa.width.is_some() {
454 return Err(syn::Error::new_spanned(
455 &f.ty,
456 "`width` is not valid on struct fields; use `#[dataframe(as_list)]` \
457 to keep as an opaque list-column",
458 ));
459 }
460 if fa.expand {
461 return Err(syn::Error::new_spanned(
462 &f.ty,
463 "`expand`/`unnest` is not valid on struct fields; struct fields \
464 flatten by default via their DataFrameRow impl",
465 ));
466 }
467 resolved.push(EnumResolvedField::Struct(Box::new(
468 EnumStructFieldData {
469 base_name: col_name_str,
470 binding,
471 rust_name,
472 inner_ty: inner_ty.clone(),
473 },
474 )));
475 }
476 FieldTypeKind::Scalar => {
477 resolved.push(EnumResolvedField::Single(Box::new(
478 EnumSingleFieldData {
479 col_name: crate::naming::name_ident(&col_name_str),
480 binding,
481 rust_name,
482 ty: f.ty.clone(),
483 needs_into_list: false,
484 is_factor: false,
485 },
486 )));
487 }
488 FieldTypeKind::OptionScalar => {
489 return Err(option_scalar_in_variant_error(&f.ty));
490 }
491 }
492 }
493 }
494 variant_infos.push(VariantInfo {
495 name: variant.ident.clone(),
496 shape: VariantShape::Tuple,
497 fields: resolved,
498 skipped_fields: ::alloc::vec::Vec::new()vec![],
499 });
500 }
501 Fields::Unit => {
502 variant_infos.push(VariantInfo {
503 name: variant.ident.clone(),
504 shape: VariantShape::Unit,
505 fields: ::alloc::vec::Vec::new()vec![],
506 skipped_fields: ::alloc::vec::Vec::new()vec![],
507 });
508 }
509 }
510 }
511 let coerce_to_string = attrs.conflicts.as_deref() == Some("string");
517 let string_ty: syn::Type = ::syn::__private::parse_quote({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "String");
_s
})syn::parse_quote!(::std::string::String);
518 let mut registry = ColumnRegistry::new(coerce_to_string, &string_ty);
519
520 for (variant_idx, vi) in variant_infos.iter().enumerate() {
521 for erf in &vi.fields {
522 let err_span = erf.rust_name().span();
524 match erf {
525 EnumResolvedField::Single(data) => {
526 if data.is_factor {
527 registry.register_factor(
528 &data.col_name.to_string(),
529 &data.ty,
530 variant_idx,
531 &vi.name,
532 err_span,
533 )?;
534 } else {
535 registry.register(
536 &data.col_name.to_string(),
537 &data.ty,
538 variant_idx,
539 &vi.name,
540 err_span,
541 )?;
542 }
543 }
544 EnumResolvedField::ExpandedFixed(data) => {
545 for i in 1..=data.len {
546 let name = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_{1}", data.base_name, i))
})format!("{}_{}", data.base_name, i);
547 registry.register(&name, &data.elem_ty, variant_idx, &vi.name, err_span)?;
548 }
549 }
550 EnumResolvedField::ExpandedVec(data) => {
551 for i in 1..=data.width {
552 let name = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_{1}", data.base_name, i))
})format!("{}_{}", data.base_name, i);
553 registry.register(&name, &data.elem_ty, variant_idx, &vi.name, err_span)?;
554 }
555 }
556 EnumResolvedField::AutoExpandVec(..) => {}
559 EnumResolvedField::Map(data) => {
560 let key_ty = &data.key_ty;
561 let val_ty = &data.val_ty;
562 let keys_name = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_keys", data.base_name))
})format!("{}_keys", data.base_name);
563 let vals_name = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_values", data.base_name))
})format!("{}_values", data.base_name);
564 let key_vec_ty: syn::Type = ::syn::__private::parse_quote({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&key_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
_s
})syn::parse_quote!(::std::vec::Vec<#key_ty>);
567 let val_vec_ty: syn::Type = ::syn::__private::parse_quote({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&val_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
_s
})syn::parse_quote!(::std::vec::Vec<#val_ty>);
568 registry.register(&keys_name, &key_vec_ty, variant_idx, &vi.name, err_span)?;
569 registry.register(&vals_name, &val_vec_ty, variant_idx, &vi.name, err_span)?;
570 }
571 EnumResolvedField::Struct(data) => {
574 let inner_ty = &data.inner_ty;
575 registry.register(
577 &data.base_name,
578 inner_ty,
579 variant_idx,
580 &vi.name,
581 err_span,
582 )?;
583 }
584 }
585 }
586 }
587 let columns = registry.columns;
588 struct EnumAutoExpandCol {
592 df_field: syn::Ident,
593 base_name: String,
594 elem_ty: syn::Type,
595 container_ty: syn::Type,
596 present_in: Vec<usize>,
597 }
598
599 let mut auto_expand_cols: Vec<EnumAutoExpandCol> = Vec::new();
600 let mut auto_expand_index: HashMap<String, usize> = HashMap::new();
601
602 for (variant_idx, vi) in variant_infos.iter().enumerate() {
603 for erf in &vi.fields {
604 if let EnumResolvedField::AutoExpandVec(auto_data) = erf {
605 if let Some(&idx) = auto_expand_index.get(&auto_data.base_name) {
606 let elem_match = auto_expand_cols[idx].elem_ty == auto_data.elem_ty;
607 let container_match =
608 auto_expand_cols[idx].container_ty == auto_data.container_ty;
609 if !elem_match {
610 if coerce_to_string {
611 auto_expand_cols[idx].elem_ty = string_ty.clone();
612 } else {
613 return Err(syn::Error::new(
614 auto_data.rust_name.span(),
615 ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("type conflict for auto-expand field `{0}`: different element type than a previous variant; use `#[dataframe(conflicts = \"string\")]` to coerce",
auto_data.base_name))
})format!(
616 "type conflict for auto-expand field `{}`: different element type \
617 than a previous variant; \
618 use `#[dataframe(conflicts = \"string\")]` to coerce",
619 auto_data.base_name,
620 ),
621 ));
622 }
623 }
624 if !container_match {
625 return Err(syn::Error::new(
626 auto_data.rust_name.span(),
627 ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("container type mismatch for auto-expand field `{0}`: all variants must use the same container type (`Vec<T>`, `Box<[T]>`, or `&[T]`)",
auto_data.base_name))
})format!(
628 "container type mismatch for auto-expand field `{}`: \
629 all variants must use the same container type \
630 (`Vec<T>`, `Box<[T]>`, or `&[T]`)",
631 auto_data.base_name,
632 ),
633 ));
634 }
635 auto_expand_cols[idx].present_in.push(variant_idx);
636 } else {
637 let idx = auto_expand_cols.len();
638 auto_expand_cols.push(EnumAutoExpandCol {
639 df_field: crate::naming::name_ident(&auto_data.base_name),
640 base_name: auto_data.base_name.clone(),
641 elem_ty: auto_data.elem_ty.clone(),
642 container_ty: auto_data.container_ty.clone(),
643 present_in: ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[variant_idx]))vec![variant_idx],
644 });
645 auto_expand_index.insert(auto_data.base_name.clone(), idx);
646 }
647 }
648 }
649 }
650 let has_enum_auto_expand = !auto_expand_cols.is_empty();
651 struct EnumStructCol {
655 df_field: syn::Ident,
657 base_name: String,
659 inner_ty: syn::Type,
661 }
662
663 let mut struct_cols: Vec<EnumStructCol> = Vec::new();
664 let mut struct_col_index: HashMap<String, bool> = HashMap::new();
665
666 for vi in &variant_infos {
667 for erf in &vi.fields {
668 if let EnumResolvedField::Struct(data) = erf
669 && !struct_col_index.contains_key(&data.base_name)
670 {
671 struct_col_index.insert(data.base_name.clone(), true);
672 struct_cols.push(EnumStructCol {
673 df_field: crate::naming::name_ident(&data.base_name),
674 base_name: data.base_name.clone(),
675 inner_ty: data.inner_ty.clone(),
676 });
677 }
678 }
679 }
680 let has_struct_cols = !struct_cols.is_empty();
681 let mut as_list_struct_col_names: std::collections::HashSet<String> =
692 std::collections::HashSet::new();
693 for vi in &variant_infos {
694 for erf in &vi.fields {
695 if let EnumResolvedField::Single(data) = erf
696 && data.needs_into_list
697 {
698 as_list_struct_col_names.insert(data.col_name.to_string());
699 }
700 }
701 }
702 let has_as_list_struct_cols = !as_list_struct_col_names.is_empty();
703
704 let mut factor_col_names: std::collections::HashSet<String> = std::collections::HashSet::new();
707 for vi in &variant_infos {
708 for erf in &vi.fields {
709 if let EnumResolvedField::Single(data) = erf
710 && data.is_factor
711 {
712 factor_col_names.insert(data.col_name.to_string());
713 }
714 }
715 }
716 let has_factor_cols = !factor_col_names.is_empty();
717 let has_tag = attrs.tag.is_some();
721
722 let tag_field = if has_tag {
723 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "_tag");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "String");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
_s
}quote! { pub _tag: ::std::vec::Vec<::std::string::String>, }
724 } else {
725 TokenStream::new()
726 };
727
728 let mut column_fields: Vec<(syn::Ident, TokenStream)> = columns
731 .iter()
732 .map(|col| {
733 let ty = &col.ty;
734 (
735 col.col_name.clone(),
736 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_shr(&mut _s);
_s
}quote! { ::std::vec::Vec<::core::option::Option<#ty>> },
737 )
738 })
739 .collect();
740 for ac in &auto_expand_cols {
742 let cty = &ac.container_ty;
743 column_fields.push((
744 ac.df_field.clone(),
745 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&cty, &mut _s);
::quote::__private::push_shr(&mut _s);
_s
}quote! { ::std::vec::Vec<::core::option::Option<#cty>> },
746 ));
747 }
748 let df_fields: Vec<TokenStream> = column_fields
749 .iter()
750 .map(|(name, ty)| {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "pub");
::quote::ToTokens::to_tokens(&name, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
_s
}quote! { pub #name: #ty })
751 .collect();
752
753 let mut companion_fields: Vec<(syn::Ident, TokenStream)> = Vec::new();
754 if has_tag {
755 companion_fields.push((
756 ::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("_tag"))
}), ::quote::__private::Option::None)format_ident!("_tag"),
757 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "String");
::quote::__private::push_gt(&mut _s);
_s
}quote! { ::std::vec::Vec<::std::string::String> },
758 ));
759 }
760
761 companion_fields.extend(column_fields);
762 let (phantom_field, phantom_init) =
763 companion_lifetime_marker(&input.generics, &mut companion_fields);
764 let companion_debug_clone = companion_debug_clone(df_name, &input.generics, &companion_fields);
765
766 let dataframe_struct = {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "struct");
::quote::ToTokens::to_tokens(&df_name, &mut _s);
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&tag_field, &mut _s);
::quote::ToTokens::to_tokens(&phantom_field, &mut _s);
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut df_fields, i) = df_fields.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let df_fields =
match df_fields.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&df_fields, &mut _s);
}
}
_s
});
::quote::ToTokens::to_tokens(&companion_debug_clone, &mut _s);
_s
}quote! {
767 pub struct #df_name #impl_generics #where_clause {
768 #tag_field
769 #phantom_field
770 #(#df_fields),*
771 }
772
773 #companion_debug_clone
774 };
775 let length_ref = if has_tag {
780 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "_tag");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { self._tag.len() }
781 } else if let Some(first_col) = columns.first() {
782 let first = &first_col.col_name;
783 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::ToTokens::to_tokens(&first, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { self.#first.len() }
784 } else if let Some(first_ac) = auto_expand_cols.first() {
785 let first = &first_ac.df_field;
786 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::ToTokens::to_tokens(&first, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { self.#first.len() }
787 } else {
788 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "0usize");
_s
}quote! { 0usize }
790 };
791
792 let tag_pair = if let Some(ref tag_name) = attrs.tag {
798 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&tag_name, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "_tag");
_s
});
_s
});
_s
});
::quote::__private::push_comma(&mut _s);
_s
}quote! { (#tag_name, __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(self._tag))), }
799 } else {
800 TokenStream::new()
801 };
802
803 let col_pairs: Vec<TokenStream> = columns
804 .iter()
805 .map(|col| {
806 let name = &col.col_name;
807 let name_str = name.to_string();
808 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&name_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::ToTokens::to_tokens(&name, &mut _s);
_s
});
_s
});
_s
});
_s
}quote! { (#name_str, __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(self.#name))) }
809 })
810 .collect();
811
812 let length_checks: Vec<TokenStream> = columns
814 .iter()
815 .map(|col| {
816 let name = &col.col_name;
817 let name_str = name.to_string();
818 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "assert");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::ToTokens::to_tokens(&name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_eq_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "_n_rows");
::quote::__private::push_comma(&mut _s);
::quote::__private::parse(&mut _s,
"\"column length mismatch in {}: column `{}` has length {} but expected {}\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "stringify");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&df_name, &mut _s);
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&name_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::ToTokens::to_tokens(&name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "_n_rows");
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
819 ::core::assert!(
820 self.#name.len() == _n_rows,
821 "column length mismatch in {}: column `{}` has length {} but expected {}",
822 ::core::stringify!(#df_name),
823 #name_str,
824 self.#name.len(),
825 _n_rows,
826 );
827 }
828 })
829 .collect();
830
831 let struct_col_names: std::collections::HashSet<String> =
833 struct_cols.iter().map(|sc| sc.base_name.clone()).collect();
834
835 let into_dataframe_impl = if has_enum_auto_expand
836 || has_struct_cols
837 || has_as_list_struct_cols
838 || has_factor_cols
839 {
840 let tag_push_pair = if let Some(ref tag_name) = attrs.tag {
843 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__df_pairs");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&tag_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "_tag");
_s
});
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
844 __df_pairs.push((
845 #tag_name.to_string(),
846 __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(self._tag)),
847 ));
848 }
849 } else {
850 TokenStream::new()
851 };
852
853 let static_pair_pushes: Vec<TokenStream> = columns
857 .iter()
858 .filter(|col| {
859 let name_str = col.col_name.to_string();
860 !struct_col_names.contains(&name_str)
861 && !as_list_struct_col_names.contains(&name_str)
862 && !factor_col_names.contains(&name_str)
863 })
864 .map(|col| {
865 let name = &col.col_name;
866 let name_str = name.to_string();
867 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__df_pairs");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&name_str, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::ToTokens::to_tokens(&name, &mut _s);
_s
});
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
868 __df_pairs.push((
869 #name_str.to_string(),
870 __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(self.#name)),
871 ));
872 }
873 })
874 .collect();
875
876 let as_list_struct_pushes: Vec<TokenStream> = columns
881 .iter()
882 .filter(|col| as_list_struct_col_names.contains(&col.col_name.to_string()))
883 .map(|col| {
884 let name = &col.col_name;
885 let name_str = name.to_string();
886 let into_option_list_column = list_column_fn(&col.ty, true);
887 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__df_pairs");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&name_str, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&into_option_list_column,
&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::ToTokens::to_tokens(&name, &mut _s);
_s
});
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
888 __df_pairs.push((
889 #name_str.to_string(),
890 __scope.protect_raw(#into_option_list_column(self.#name)),
891 ));
892 }
893 })
894 .collect();
895
896 let factor_pair_pushes: Vec<TokenStream> = columns
899 .iter()
900 .filter(|col| factor_col_names.contains(&col.col_name.to_string()))
901 .map(|col| {
902 let name = &col.col_name;
903 let name_str = name.to_string();
904 let ty = &col.ty;
905 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__df_pairs");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&name_str, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "factor");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FactorOptionVec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::ToTokens::to_tokens(&name, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
906 __df_pairs.push((
907 #name_str.to_string(),
908 __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(
909 ::miniextendr_api::factor::FactorOptionVec::<#ty>::from(self.#name)
910 )),
911 ));
912 }
913 })
914 .collect();
915
916 let auto_expand_pair_pushes: Vec<TokenStream> = auto_expand_cols
917 .iter()
918 .map(|ac| {
919 let df_field = &ac.df_field;
920 let base_name_str = &ac.base_name;
921 let elem_ty = &ac.elem_ty;
922 let elems_iter = owned_elems_iter(
923 &{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__row_vec");
_s
}quote! { __row_vec },
924 field_is_borrowed_ref(&ac.container_ty),
925 elem_ty,
926 );
927 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__auto");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::ToTokens::to_tokens(&df_field, &mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__max");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__auto");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "filter_map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "v");
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "v");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "as_ref");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "v");
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "v");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "max");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "unwrap_or");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "0");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__cols");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&elem_ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "0");
::quote::__private::push_dot2(&mut _s);
::quote::__private::push_ident(&mut _s, "__max");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_or(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "with_capacity");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "_n_rows");
_s
});
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "collect");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "__opt_vec");
::quote::__private::push_ident(&mut _s, "in");
::quote::__private::push_ident(&mut _s, "__auto");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__elems");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__opt_vec");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "__row_vec");
::quote::__private::push_or(&mut _s);
::quote::ToTokens::to_tokens(&elems_iter, &mut _s);
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "__col");
::quote::__private::push_ident(&mut _s, "in");
::quote::__private::push_ident(&mut _s, "__cols");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "iter_mut");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__col");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "and_then");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "as_mut");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__elems");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "iter");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Iterator");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "next");
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__col");
_s
});
::quote::__private::push_ident(&mut _s, "in");
::quote::__private::push_ident(&mut _s, "__cols");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into_iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "enumerate");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__df_pairs");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"{}_{}\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&base_name_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_add(&mut _s);
::quote::__private::parse(&mut _s, "1");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__col");
_s
});
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
_s
}quote! {
928 {
929 let __auto = self.#df_field;
930 let __max = __auto.iter()
931 .filter_map(|v| v.as_ref())
932 .map(|v| v.len())
933 .max()
934 .unwrap_or(0);
935 let mut __cols: ::std::vec::Vec<::std::vec::Vec<::core::option::Option<#elem_ty>>> = (0..__max)
936 .map(|_| ::std::vec::Vec::with_capacity(_n_rows))
937 .collect();
938 for __opt_vec in __auto {
939 let mut __elems = ::core::option::Option::map(
940 __opt_vec,
941 |__row_vec| #elems_iter,
942 );
943 for __col in __cols.iter_mut() {
944 __col.push(::core::option::Option::and_then(
945 ::core::option::Option::as_mut(&mut __elems),
946 ::core::iter::Iterator::next,
947 ));
948 }
949 }
950 for (__i, __col) in __cols.into_iter().enumerate() {
951 __df_pairs.push((
952 ::std::format!("{}_{}", #base_name_str, __i + 1),
953 __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(__col)),
954 ));
955 }
956 }
957 }
958 })
959 .collect();
960
961 let struct_flatten_pushes: Vec<TokenStream> = struct_cols
966 .iter()
967 .map(|sc| {
968 let df_field = &sc.df_field;
969 let base_name_str = &sc.base_name;
970 let inner_ty = &sc.inner_ty;
971 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__present_idx");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "usize");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__inner_rows");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&inner_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__row_i");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__opt");
_s
});
::quote::__private::push_ident(&mut _s, "in");
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_dot(&mut _s);
::quote::ToTokens::to_tokens(&df_field, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into_iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "enumerate");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "if");
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__inner");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__opt");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__present_idx");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__row_i");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "__inner_rows");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__inner");
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__inner_df");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&inner_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "to_dataframe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__inner_rows");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__inner_cols");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "convert");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ColumnSource");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_named_columns");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__inner_df");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__inner_col_name");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__inner_col_sexp");
_s
});
::quote::__private::push_ident(&mut _s, "in");
::quote::__private::push_ident(&mut _s, "__inner_cols");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__prefixed");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"{}_{}\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&base_name_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__inner_col_name");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__scattered");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "convert");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "scatter_column");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__inner_col_sexp");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "__present_idx");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "_n_rows");
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "__df_pairs");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__prefixed");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scattered");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
_s
}quote! {
972 {
973 let mut __present_idx: ::std::vec::Vec<usize> = ::std::vec::Vec::new();
976 let mut __inner_rows: ::std::vec::Vec<#inner_ty> = ::std::vec::Vec::new();
977 for (__row_i, __opt) in self.#df_field.into_iter().enumerate() {
978 if let ::core::option::Option::Some(__inner) = __opt {
979 __present_idx.push(__row_i);
980 __inner_rows.push(__inner);
981 }
982 }
983 let __inner_df = <#inner_ty>::to_dataframe(__inner_rows);
985 let __inner_cols = ::miniextendr_api::convert::ColumnSource::into_named_columns(
988 __inner_df,
989 &__scope,
990 );
991 for (__inner_col_name, __inner_col_sexp) in __inner_cols {
995 let __prefixed = ::std::format!("{}_{}", #base_name_str, __inner_col_name);
996 let __scattered = __scope.protect_raw(
997 ::miniextendr_api::convert::scatter_column(
998 __inner_col_sexp,
999 &__present_idx,
1000 _n_rows,
1001 ),
1002 );
1003 __df_pairs.push((__prefixed, __scattered));
1004 }
1005 }
1006 }
1007 })
1008 .collect();
1009
1010 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "convert");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ColumnSource");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&df_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "into_column_list");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "List");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "_n_rows");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&length_ref, &mut _s);
::quote::__private::push_semi(&mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut length_checks, i) =
length_checks.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let length_checks =
match length_checks.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&length_checks, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "unsafe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "gc_protect");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ProtectScope");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__df_pairs");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "String");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SEXP");
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::ToTokens::to_tokens(&tag_push_pair, &mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut static_pair_pushes, i) =
static_pair_pushes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let static_pair_pushes =
match static_pair_pushes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&static_pair_pushes, &mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut factor_pair_pushes, i) =
factor_pair_pushes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let factor_pair_pushes =
match factor_pair_pushes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&factor_pair_pushes, &mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut auto_expand_pair_pushes, i) =
auto_expand_pair_pushes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let auto_expand_pair_pushes =
match auto_expand_pair_pushes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&auto_expand_pair_pushes,
&mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut struct_flatten_pushes, i) =
struct_flatten_pushes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let struct_flatten_pushes =
match struct_flatten_pushes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&struct_flatten_pushes,
&mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut as_list_struct_pushes, i) =
as_list_struct_pushes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let as_list_struct_pushes =
match as_list_struct_pushes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&as_list_struct_pushes,
&mut _s);
}
}
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "list");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "List");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from_raw_pairs");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__df_pairs");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "set_class_str");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"data.frame\"");
_s
});
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s,
"set_row_names_int");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "_n_rows");
_s
});
_s
});
_s
});
_s
});
_s
}quote! {
1011 impl #impl_generics ::miniextendr_api::convert::ColumnSource for #df_name #ty_generics #where_clause {
1012 fn into_column_list(self) -> ::miniextendr_api::List {
1013 let _n_rows = #length_ref;
1014 #(#length_checks)*
1015 unsafe {
1020 let __scope = ::miniextendr_api::gc_protect::ProtectScope::new();
1021 let mut __df_pairs: ::std::vec::Vec<(
1022 ::std::string::String,
1023 ::miniextendr_api::SEXP,
1024 )> = ::std::vec::Vec::new();
1025 #tag_push_pair
1026 #(#static_pair_pushes)*
1027 #(#factor_pair_pushes)*
1028 #(#auto_expand_pair_pushes)*
1029 #(#struct_flatten_pushes)*
1030 #(#as_list_struct_pushes)*
1031 ::miniextendr_api::list::List::from_raw_pairs(__df_pairs)
1032 .set_class_str(&["data.frame"])
1033 .set_row_names_int(_n_rows)
1034 }
1035 }
1036 }
1037 }
1038 } else {
1039 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "convert");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ColumnSource");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&df_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "into_column_list");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "List");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "_n_rows");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&length_ref, &mut _s);
::quote::__private::push_semi(&mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut length_checks, i) =
length_checks.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let length_checks =
match length_checks.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&length_checks, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "unsafe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "gc_protect");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ProtectScope");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__pairs");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "str");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SEXP");
_s
});
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&tag_pair, &mut _s);
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut col_pairs, i) = col_pairs.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let col_pairs =
match col_pairs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&col_pairs, &mut _s);
}
}
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "list");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "List");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from_raw_pairs");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__pairs");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "set_class_str");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"data.frame\"");
_s
});
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s,
"set_row_names_int");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "_n_rows");
_s
});
_s
});
_s
});
_s
});
_s
}quote! {
1040 impl #impl_generics ::miniextendr_api::convert::ColumnSource for #df_name #ty_generics #where_clause {
1041 fn into_column_list(self) -> ::miniextendr_api::List {
1042 let _n_rows = #length_ref;
1043 #(#length_checks)*
1044 unsafe {
1046 let __scope = ::miniextendr_api::gc_protect::ProtectScope::new();
1047 let __pairs: ::std::vec::Vec<(&str, ::miniextendr_api::SEXP)> = ::std::vec![
1050 #tag_pair
1051 #(#col_pairs),*
1052 ];
1053 ::miniextendr_api::list::List::from_raw_pairs(__pairs)
1054 .set_class_str(&["data.frame"])
1055 .set_row_names_int(_n_rows)
1056 }
1057 }
1058 }
1059 }
1060 };
1061
1062 let struct_assertions: Vec<TokenStream> = struct_cols
1065 .iter()
1066 .map(|sc| {
1067 let inner_ty = &sc.inner_ty;
1068 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s,
"_assert_inner_is_dataframe_row");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "T");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "markers");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrameRow");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
::quote::__private::TokenStream::new());
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "_do_assert");
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s,
"_assert_inner_is_dataframe_row");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&inner_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
1069 const _: () = {
1070 fn _assert_inner_is_dataframe_row<T: ::miniextendr_api::markers::DataFrameRow>() {}
1071 fn _do_assert #impl_generics () #where_clause {
1072 _assert_inner_is_dataframe_row::<#inner_ty>();
1073 }
1074 };
1075 }
1076 })
1077 .collect();
1078
1079 let payload_collision_assertions: Vec<TokenStream> = struct_cols
1089 .iter()
1090 .map(|sc| {
1091 let inner_ty = &sc.inner_ty;
1092 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "markers");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"assert_no_payload_field_collision");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&inner_ty, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "markers");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFramePayloadFields");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FIELDS");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&inner_ty, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "markers");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFramePayloadFields");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "TAG");
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
1093 const _: () = ::miniextendr_api::markers::assert_no_payload_field_collision(
1094 <#inner_ty as ::miniextendr_api::markers::DataFramePayloadFields>::FIELDS,
1095 <#inner_ty as ::miniextendr_api::markers::DataFramePayloadFields>::TAG,
1096 );
1097 }
1098 })
1099 .collect();
1100
1101 let all_single_col_names: Vec<String> = {
1115 let mut seen = std::collections::HashSet::new();
1116 let mut names = Vec::new();
1117 for vi in &variant_infos {
1118 for erf in &vi.fields {
1119 if let EnumResolvedField::Single(d) = erf {
1120 let col = d.col_name.to_string();
1121 if seen.insert(col.clone()) {
1122 names.push(col);
1123 }
1124 }
1125 }
1126 }
1127 names
1128 };
1129 let sibling_collision_assertions: Vec<TokenStream> = struct_cols
1130 .iter()
1131 .map(|sc| {
1132 let inner_ty = &sc.inner_ty;
1133 let base_str = &sc.base_name;
1134 let sibling_lits = all_single_col_names
1135 .iter()
1136 .map(|s| {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&s, &mut _s);
_s
}quote! { #s })
1137 .collect::<Vec<_>>();
1138 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "markers");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"assert_no_sibling_field_collision");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut sibling_lits, i) = sibling_lits.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let sibling_lits =
match sibling_lits.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&sibling_lits, &mut _s);
}
}
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&base_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&inner_ty, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "markers");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFramePayloadFields");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "TAG");
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
1139 const _: () = ::miniextendr_api::markers::assert_no_sibling_field_collision(
1140 &[#(#sibling_lits),*],
1141 #base_str,
1142 <#inner_ty as ::miniextendr_api::markers::DataFramePayloadFields>::TAG,
1143 );
1144 }
1145 })
1146 .collect();
1147 let mut col_vec_inits: Vec<TokenStream> = columns
1151 .iter()
1152 .map(|col| {
1153 let name = &col.col_name;
1154 let ty = &col.ty;
1155 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&name, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "with_capacity");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "len");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { let mut #name: ::std::vec::Vec<::core::option::Option<#ty>> = ::std::vec::Vec::with_capacity(len); }
1156 })
1157 .collect();
1158 for ac in &auto_expand_cols {
1159 let name = &ac.df_field;
1160 let cty = &ac.container_ty;
1161 col_vec_inits.push(
1162 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&name, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&cty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "with_capacity");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "len");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { let mut #name: ::std::vec::Vec<::core::option::Option<#cty>> = ::std::vec::Vec::with_capacity(len); },
1163 );
1164 }
1165
1166 let tag_init = if has_tag {
1167 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "_tag");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "String");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "with_capacity");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "len");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { let mut _tag: ::std::vec::Vec<::std::string::String> = ::std::vec::Vec::with_capacity(len); }
1168 } else {
1169 TokenStream::new()
1170 };
1171
1172 let match_arms: Vec<TokenStream> = variant_infos
1174 .iter()
1175 .enumerate()
1176 .map(|(variant_idx, vi)| {
1177 let variant_name = &vi.name;
1178 let variant_name_str = variant_name.to_string();
1179
1180 let tag_push = if has_tag {
1181 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "_tag");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&variant_name_str, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { _tag.push(#variant_name_str.to_string()); }
1182 } else {
1183 TokenStream::new()
1184 };
1185
1186 let col_pushes: Vec<TokenStream> = columns
1192 .iter()
1193 .map(|col| {
1194 let col_name = &col.col_name;
1195 if col.present_in.contains(&variant_idx) {
1196 let col_name_str = col_name.to_string();
1197
1198 for (pos, erf) in vi.fields.iter().enumerate() {
1199 match erf {
1200 EnumResolvedField::Single(data)
1201 if data.col_name == *col_name =>
1202 {
1203 let binding = &data.binding;
1204 if col.string_coerced {
1205 return {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ToString");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #col_name.push(::core::option::Option::Some(::std::string::ToString::to_string(&#binding))); };
1206 } else {
1207 return {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #col_name.push(::core::option::Option::Some(#binding)); };
1208 }
1209 }
1210 EnumResolvedField::ExpandedFixed(data) => {
1211 let elems = enum_elem_idents(pos, data.len);
1212 for (i, elem) in elems.iter().enumerate() {
1213 let expanded_name = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_{1}", data.base_name, i + 1))
})format!("{}_{}", data.base_name, i + 1);
1214 if expanded_name == col_name_str {
1215 return {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&elem, &mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #col_name.push(::core::option::Option::Some(#elem)); };
1216 }
1217 }
1218 }
1219 EnumResolvedField::ExpandedVec(data) => {
1220 let elems = enum_elem_idents(pos, data.width);
1221 for (i, elem) in elems.iter().enumerate() {
1222 let expanded_name = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_{1}", data.base_name, i + 1))
})format!("{}_{}", data.base_name, i + 1);
1223 if expanded_name == col_name_str {
1224 return {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&elem, &mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #col_name.push(#elem); };
1225 }
1226 }
1227 }
1228 EnumResolvedField::Map(data) => {
1229 let keys_name = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_keys", data.base_name))
})format!("{}_keys", data.base_name);
1230 let vals_name = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_values", data.base_name))
})format!("{}_values", data.base_name);
1231 let binding = &data.binding;
1232 if col_name_str == keys_name {
1236 let vals_col = match ::quote::__private::IdentFragmentAdapter(&vals_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("{}", vals_name);
1237 return {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__mx_keys");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__mx_vals");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&binding, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into_iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "unzip");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::ToTokens::to_tokens(&col_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__mx_keys");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
::quote::ToTokens::to_tokens(&vals_col, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__mx_vals");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
1238 let (__mx_keys, __mx_vals) = #binding.into_iter().unzip::<_, _, ::std::vec::Vec<_>, ::std::vec::Vec<_>>();
1239 #col_name.push(::core::option::Option::Some(__mx_keys));
1240 #vals_col.push(::core::option::Option::Some(__mx_vals));
1241 };
1242 }
1243 if col_name_str == vals_name {
1244 return ::quote::__private::TokenStream::new()quote! {};
1246 }
1247 }
1248 EnumResolvedField::Struct(data)
1250 if data.base_name == col_name_str =>
1251 {
1252 let binding = &data.binding;
1253 return {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #col_name.push(::core::option::Option::Some(#binding)); };
1254 }
1255 _ => {}
1257 }
1258 }
1259 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #col_name.push(::core::option::Option::None); }
1260 } else {
1261 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #col_name.push(::core::option::Option::None); }
1262 }
1263 })
1264 .collect();
1265
1266 let elem_prelude = expanded_elem_prelude(vi);
1267
1268 let auto_expand_pushes: Vec<TokenStream> = auto_expand_cols
1270 .iter()
1271 .map(|ac| {
1272 let ac_field = &ac.df_field;
1273 if ac.present_in.contains(&variant_idx) {
1274 for erf in &vi.fields {
1276 if let EnumResolvedField::AutoExpandVec(data) = erf
1277 && data.base_name == ac.base_name
1278 {
1279 let binding = &data.binding;
1280 return {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&ac_field, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #ac_field.push(::core::option::Option::Some(#binding)); };
1281 }
1282 }
1283 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&ac_field, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #ac_field.push(::core::option::Option::None); }
1285 } else {
1286 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&ac_field, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #ac_field.push(::core::option::Option::None); }
1287 }
1288 })
1289 .collect();
1290
1291 match vi.shape {
1293 VariantShape::Named => {
1294 let mut field_bindings: Vec<TokenStream> = vi.fields.iter().map(|erf| {
1295 let rust_name = erf.rust_name();
1296 let binding = erf.binding();
1297 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&rust_name, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
}quote! { #rust_name: #binding }
1298 }).collect();
1299 for skipped in &vi.skipped_fields {
1301 field_bindings.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&skipped, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_underscore(&mut _s);
_s
}quote! { #skipped: _ });
1302 }
1303 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut field_bindings, i) =
field_bindings.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let field_bindings =
match field_bindings.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&field_bindings, &mut _s);
}
}
_s
});
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&tag_push, &mut _s);
::quote::ToTokens::to_tokens(&elem_prelude, &mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut col_pushes, i) = col_pushes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let col_pushes =
match col_pushes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&col_pushes, &mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut auto_expand_pushes, i) =
auto_expand_pushes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let auto_expand_pushes =
match auto_expand_pushes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&auto_expand_pushes, &mut _s);
}
}
_s
});
_s
}quote! {
1304 #row_name::#variant_name { #(#field_bindings),* } => {
1305 #tag_push
1306 #elem_prelude
1307 #(#col_pushes)*
1308 #(#auto_expand_pushes)*
1309 }
1310 }
1311 }
1312 VariantShape::Tuple => {
1313 let field_bindings: Vec<TokenStream> = vi.fields.iter().map(|erf| {
1314 let binding = erf.binding();
1315 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
}quote! { #binding }
1316 }).collect();
1317 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut field_bindings, i) =
field_bindings.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let field_bindings =
match field_bindings.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&field_bindings, &mut _s);
}
}
_s
});
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&tag_push, &mut _s);
::quote::ToTokens::to_tokens(&elem_prelude, &mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut col_pushes, i) = col_pushes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let col_pushes =
match col_pushes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&col_pushes, &mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut auto_expand_pushes, i) =
auto_expand_pushes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let auto_expand_pushes =
match auto_expand_pushes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&auto_expand_pushes, &mut _s);
}
}
_s
});
_s
}quote! {
1318 #row_name::#variant_name(#(#field_bindings),*) => {
1319 #tag_push
1320 #elem_prelude
1321 #(#col_pushes)*
1322 #(#auto_expand_pushes)*
1323 }
1324 }
1325 }
1326 VariantShape::Unit => {
1327 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_name, &mut _s);
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&tag_push, &mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut col_pushes, i) = col_pushes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let col_pushes =
match col_pushes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&col_pushes, &mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut auto_expand_pushes, i) =
auto_expand_pushes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let auto_expand_pushes =
match auto_expand_pushes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&auto_expand_pushes, &mut _s);
}
}
_s
});
_s
}quote! {
1328 #row_name::#variant_name => {
1329 #tag_push
1330 #(#col_pushes)*
1331 #(#auto_expand_pushes)*
1332 }
1333 }
1334 }
1335 }
1336 })
1337 .collect();
1338
1339 let tag_struct_field = if has_tag {
1340 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "_tag");
::quote::__private::push_comma(&mut _s);
_s
}quote! { _tag, }
1341 } else {
1342 TokenStream::new()
1343 };
1344
1345 let mut col_struct_fields: Vec<TokenStream> = columns
1346 .iter()
1347 .map(|col| {
1348 let name = &col.col_name;
1349 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&name, &mut _s);
_s
}quote! { #name }
1350 })
1351 .collect();
1352 for ac in &auto_expand_cols {
1353 let name = &ac.df_field;
1354 col_struct_fields.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&name, &mut _s);
_s
}quote! { #name });
1355 }
1356
1357 let from_vec_impl = {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "convert");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "From");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&df_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "from");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "rows");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::__private::push_gt(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "rows");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::ToTokens::to_tokens(&tag_init, &mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut col_vec_inits, i) =
col_vec_inits.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let col_vec_inits =
match col_vec_inits.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&col_vec_inits, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "row");
::quote::__private::push_ident(&mut _s, "in");
::quote::__private::push_ident(&mut _s, "rows");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "match");
::quote::__private::push_ident(&mut _s, "row");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut match_arms, i) = match_arms.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let match_arms =
match match_arms.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&match_arms, &mut _s);
}
}
_s
});
_s
});
::quote::ToTokens::to_tokens(&df_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&tag_struct_field, &mut _s);
::quote::ToTokens::to_tokens(&phantom_init, &mut _s);
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut col_struct_fields, i) =
col_struct_fields.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let col_struct_fields =
match col_struct_fields.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&col_struct_fields, &mut _s);
}
}
_s
});
_s
});
_s
});
_s
}quote! {
1358 impl #impl_generics ::core::convert::From<::std::vec::Vec<#row_name #ty_generics>> for #df_name #ty_generics #where_clause {
1359 fn from(rows: ::std::vec::Vec<#row_name #ty_generics>) -> Self {
1360 let len = rows.len();
1361 #tag_init
1362 #(#col_vec_inits)*
1363 for row in rows {
1364 match row {
1365 #(#match_arms)*
1366 }
1367 }
1368 #df_name {
1369 #tag_struct_field
1370 #phantom_init
1371 #(#col_struct_fields),*
1372 }
1373 }
1374 }
1375 };
1376 let has_par_impl = !columns.is_empty() || !auto_expand_cols.is_empty() || has_tag;
1386 let (parallel_columns_item, from_rows_par_method) = if has_par_impl {
1387 let mut par_bounds: Vec<(TokenStream, TokenStream)> = ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
_s
},
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "marker");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Send");
_s
})]))vec![(
1388 quote! { #row_name #ty_generics },
1389 quote! { ::core::marker::Send },
1390 )];
1391 for col in &columns {
1392 let ty = &col.ty;
1393 par_bounds.push(({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&ty, &mut _s);
_s
}quote! { #ty }, {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "marker");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Send");
_s
}quote! { ::core::marker::Send }));
1394 }
1395 for ac in &auto_expand_cols {
1396 let cty = &ac.container_ty;
1397 par_bounds.push(({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&cty, &mut _s);
_s
}quote! { #cty }, {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "marker");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Send");
_s
}quote! { ::core::marker::Send }));
1398 }
1399
1400 let mut par_col_decls = Vec::new();
1402 if has_tag {
1403 par_col_decls.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "_tag");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "String");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "String");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
1404 let mut _tag: ::std::vec::Vec<::std::string::String> = ::std::vec![::std::string::String::new(); len];
1405 });
1406 }
1407 let nones = |name: &syn::Ident, ty: &syn::Type| {
1408 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&name, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "iter");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Iterator");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "collect");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "iter");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Iterator");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "take");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "iter");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "repeat_with");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or_or(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
1409 let mut #name: ::std::vec::Vec<::core::option::Option<#ty>> =
1410 ::core::iter::Iterator::collect(::core::iter::Iterator::take(
1411 ::core::iter::repeat_with(|| ::core::option::Option::None),
1412 len,
1413 ));
1414 }
1415 };
1416 for col in &columns {
1417 par_col_decls.push(nones(&col.col_name, &col.ty));
1418 }
1419 for ac in &auto_expand_cols {
1420 par_col_decls.push(nones(&ac.df_field, &ac.container_ty));
1421 }
1422
1423 let mut writer_decls = Vec::new();
1425 if has_tag {
1426 writer_decls.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__w_tag");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "unsafe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "rayon_bridge");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ColumnWriter");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "_tag");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
1427 let __w_tag = unsafe {
1428 ::miniextendr_api::rayon_bridge::ColumnWriter::new(&mut _tag)
1429 };
1430 });
1431 }
1432 for col in &columns {
1433 let name = &col.col_name;
1434 let w_name = match ::quote::__private::IdentFragmentAdapter(&crate::naming::unraw(name)) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__w_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__w_{}", crate::naming::unraw(name));
1435 writer_decls.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::ToTokens::to_tokens(&w_name, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "unsafe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "rayon_bridge");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ColumnWriter");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&name, &mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
1436 let #w_name = unsafe {
1437 ::miniextendr_api::rayon_bridge::ColumnWriter::new(&mut #name)
1438 };
1439 });
1440 }
1441 for ac in &auto_expand_cols {
1442 let name = &ac.df_field;
1443 let w_name = match ::quote::__private::IdentFragmentAdapter(&crate::naming::unraw(name)) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__w_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__w_{}", crate::naming::unraw(name));
1444 writer_decls.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::ToTokens::to_tokens(&w_name, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "unsafe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "rayon_bridge");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ColumnWriter");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&name, &mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
1445 let #w_name = unsafe {
1446 ::miniextendr_api::rayon_bridge::ColumnWriter::new(&mut #name)
1447 };
1448 });
1449 }
1450
1451 let par_match_arms: Vec<TokenStream> = variant_infos
1453 .iter()
1454 .enumerate()
1455 .map(|(variant_idx, vi)| {
1456 let variant_name = &vi.name;
1457 let variant_name_str = variant_name.to_string();
1458
1459 let tag_write = if has_tag {
1460 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__w_tag");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "write");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&variant_name_str, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { __w_tag.write(__i, #variant_name_str.to_string()); }
1461 } else {
1462 TokenStream::new()
1463 };
1464
1465 let col_writes: Vec<TokenStream> = columns
1467 .iter()
1468 .map(|col| {
1469 let col_name = &col.col_name;
1470 let w_name = match ::quote::__private::IdentFragmentAdapter(&crate::naming::unraw(col_name))
{
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__w_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__w_{}", crate::naming::unraw(col_name));
1471 if col.present_in.contains(&variant_idx) {
1472 let col_name_str = col_name.to_string();
1473 for (pos, erf) in vi.fields.iter().enumerate() {
1474 match erf {
1475 EnumResolvedField::Single(data)
1476 if data.col_name == *col_name =>
1477 {
1478 let binding = &data.binding;
1479 if col.string_coerced {
1480 return {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&w_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "write");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ToString");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #w_name.write(__i, ::core::option::Option::Some(::std::string::ToString::to_string(&#binding))); };
1481 } else {
1482 return {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&w_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "write");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #w_name.write(__i, ::core::option::Option::Some(#binding)); };
1483 }
1484 }
1485 EnumResolvedField::ExpandedFixed(data) => {
1486 let elems = enum_elem_idents(pos, data.len);
1487 for (i, elem) in elems.iter().enumerate() {
1488 let expanded_name = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_{1}", data.base_name, i + 1))
})format!("{}_{}", data.base_name, i + 1);
1489 if expanded_name == col_name_str {
1490 return {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&w_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "write");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&elem, &mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #w_name.write(__i, ::core::option::Option::Some(#elem)); };
1491 }
1492 }
1493 }
1494 EnumResolvedField::ExpandedVec(data) => {
1495 let elems = enum_elem_idents(pos, data.width);
1496 for (i, elem) in elems.iter().enumerate() {
1497 let expanded_name = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_{1}", data.base_name, i + 1))
})format!("{}_{}", data.base_name, i + 1);
1498 if expanded_name == col_name_str {
1499 return {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&w_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "write");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&elem, &mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #w_name.write(__i, #elem); };
1500 }
1501 }
1502 }
1503 EnumResolvedField::Map(data) => {
1504 let keys_name = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_keys", data.base_name))
})format!("{}_keys", data.base_name);
1505 let vals_name = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_values", data.base_name))
})format!("{}_values", data.base_name);
1506 let binding = &data.binding;
1507 if col_name_str == keys_name {
1510 let vals_col = match ::quote::__private::IdentFragmentAdapter(&vals_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("{}", vals_name);
1511 let w_vals = match ::quote::__private::IdentFragmentAdapter(&vals_col) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__w_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__w_{}", vals_col);
1512 return {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__mx_keys");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__mx_vals");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&binding, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into_iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "unzip");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::ToTokens::to_tokens(&w_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "write");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__mx_keys");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
::quote::ToTokens::to_tokens(&w_vals, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "write");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__mx_vals");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
1513 let (__mx_keys, __mx_vals) = #binding.into_iter().unzip::<_, _, ::std::vec::Vec<_>, ::std::vec::Vec<_>>();
1514 #w_name.write(__i, ::core::option::Option::Some(__mx_keys));
1515 #w_vals.write(__i, ::core::option::Option::Some(__mx_vals));
1516 };
1517 }
1518 if col_name_str == vals_name {
1519 return ::quote::__private::TokenStream::new()quote! {};
1521 }
1522 }
1523 EnumResolvedField::Struct(data)
1525 if data.base_name == col_name_str =>
1526 {
1527 let binding = &data.binding;
1528 return {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&w_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "write");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #w_name.write(__i, ::core::option::Option::Some(#binding)); };
1529 }
1530 _ => {}
1531 }
1532 }
1533 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&w_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "write");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #w_name.write(__i, ::core::option::Option::None); }
1534 } else {
1535 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&w_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "write");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #w_name.write(__i, ::core::option::Option::None); }
1536 }
1537 })
1538 .collect();
1539
1540 let elem_prelude = expanded_elem_prelude(vi);
1541
1542 let auto_expand_writes: Vec<TokenStream> = auto_expand_cols
1544 .iter()
1545 .map(|ac| {
1546 let w_name = match ::quote::__private::IdentFragmentAdapter(&crate::naming::unraw(&ac.df_field))
{
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__w_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__w_{}", crate::naming::unraw(&ac.df_field));
1547 if ac.present_in.contains(&variant_idx) {
1548 for erf in &vi.fields {
1549 if let EnumResolvedField::AutoExpandVec(data) = erf
1550 && data.base_name == ac.base_name
1551 {
1552 let binding = &data.binding;
1553 return {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&w_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "write");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #w_name.write(__i, ::core::option::Option::Some(#binding)); };
1554 }
1555 }
1556 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&w_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "write");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #w_name.write(__i, ::core::option::Option::None); }
1557 } else {
1558 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&w_name, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "write");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #w_name.write(__i, ::core::option::Option::None); }
1559 }
1560 })
1561 .collect();
1562
1563 match vi.shape {
1565 VariantShape::Named => {
1566 let mut field_bindings: Vec<TokenStream> = vi.fields.iter().map(|erf| {
1567 let rust_name = erf.rust_name();
1568 let binding = erf.binding();
1569 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&rust_name, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
}quote! { #rust_name: #binding }
1570 }).collect();
1571 for skipped in &vi.skipped_fields {
1572 field_bindings.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&skipped, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_underscore(&mut _s);
_s
}quote! { #skipped: _ });
1573 }
1574 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut field_bindings, i) =
field_bindings.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let field_bindings =
match field_bindings.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&field_bindings, &mut _s);
}
}
_s
});
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&tag_write, &mut _s);
::quote::ToTokens::to_tokens(&elem_prelude, &mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut col_writes, i) = col_writes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let col_writes =
match col_writes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&col_writes, &mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut auto_expand_writes, i) =
auto_expand_writes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let auto_expand_writes =
match auto_expand_writes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&auto_expand_writes, &mut _s);
}
}
_s
});
_s
}quote! {
1575 #row_name::#variant_name { #(#field_bindings),* } => {
1576 #tag_write
1577 #elem_prelude
1578 #(#col_writes)*
1579 #(#auto_expand_writes)*
1580 }
1581 }
1582 }
1583 VariantShape::Tuple => {
1584 let field_bindings: Vec<TokenStream> = vi.fields.iter().map(|erf| {
1585 let binding = erf.binding();
1586 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
}quote! { #binding }
1587 }).collect();
1588 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut field_bindings, i) =
field_bindings.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let field_bindings =
match field_bindings.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&field_bindings, &mut _s);
}
}
_s
});
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&tag_write, &mut _s);
::quote::ToTokens::to_tokens(&elem_prelude, &mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut col_writes, i) = col_writes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let col_writes =
match col_writes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&col_writes, &mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut auto_expand_writes, i) =
auto_expand_writes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let auto_expand_writes =
match auto_expand_writes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&auto_expand_writes, &mut _s);
}
}
_s
});
_s
}quote! {
1589 #row_name::#variant_name(#(#field_bindings),*) => {
1590 #tag_write
1591 #elem_prelude
1592 #(#col_writes)*
1593 #(#auto_expand_writes)*
1594 }
1595 }
1596 }
1597 VariantShape::Unit => {
1598 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_name, &mut _s);
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&tag_write, &mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut col_writes, i) = col_writes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let col_writes =
match col_writes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&col_writes, &mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut auto_expand_writes, i) =
auto_expand_writes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let auto_expand_writes =
match auto_expand_writes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&auto_expand_writes, &mut _s);
}
}
_s
});
_s
}quote! {
1599 #row_name::#variant_name => {
1600 #tag_write
1601 #(#col_writes)*
1602 #(#auto_expand_writes)*
1603 }
1604 }
1605 }
1606 }
1607 })
1608 .collect();
1609
1610 let par_tag_field = if has_tag {
1612 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "_tag");
::quote::__private::push_comma(&mut _s);
_s
}quote! { _tag, }
1613 } else {
1614 TokenStream::new()
1615 };
1616 let mut par_struct_fields: Vec<TokenStream> = columns
1617 .iter()
1618 .map(|col| {
1619 let name = &col.col_name;
1620 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&name, &mut _s);
_s
}quote! { #name }
1621 })
1622 .collect();
1623 for ac in &auto_expand_cols {
1624 let name = &ac.df_field;
1625 par_struct_fields.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&name, &mut _s);
_s
}quote! { #name });
1626 }
1627
1628 let parallel_columns_item = parallel_columns_impl(
1629 df_name,
1630 row_name,
1631 &input.generics,
1632 &par_bounds,
1633 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "use");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "rayon_bridge");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "rayon");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "prelude");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_star(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "optionals");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "parallel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ensure_pool");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "rows");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut par_col_decls, i) = par_col_decls.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let par_col_decls =
match par_col_decls.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&par_col_decls, &mut _s);
}
}
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut writer_decls, i) = writer_decls.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let writer_decls =
match writer_decls.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&writer_decls, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "rows");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into_par_iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "enumerate");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "for_each");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__row");
_s
});
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "unsafe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "match");
::quote::__private::push_ident(&mut _s, "__row");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut par_match_arms, i) =
par_match_arms.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let par_match_arms =
match par_match_arms.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&par_match_arms, &mut _s);
}
}
_s
});
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
::quote::ToTokens::to_tokens(&df_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&par_tag_field, &mut _s);
::quote::ToTokens::to_tokens(&phantom_init, &mut _s);
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut par_struct_fields, i) =
par_struct_fields.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let par_struct_fields =
match par_struct_fields.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&par_struct_fields, &mut _s);
}
}
_s
});
_s
}quote! {
1634 use ::miniextendr_api::rayon_bridge::rayon::prelude::*;
1635 ::miniextendr_api::optionals::parallel::ensure_pool();
1636 let len = rows.len();
1637 #(#par_col_decls)*
1638 {
1639 #(#writer_decls)*
1640 rows.into_par_iter().enumerate().for_each(|(__i, __row)| unsafe {
1641 match __row {
1642 #(#par_match_arms)*
1643 }
1644 });
1645 }
1646 #df_name { #par_tag_field #phantom_init #(#par_struct_fields),* }
1647 },
1648 );
1649 (
1650 parallel_columns_item,
1651 from_rows_par_override({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
_s
}quote! { #row_name #ty_generics }),
1652 )
1653 } else {
1654 (TokenStream::new(), TokenStream::new())
1655 };
1656 let df_methods = {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ColumnarFrame");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&df_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "from_rows");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "rows");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::__private::push_gt(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "rows");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
::quote::ToTokens::to_tokens(&from_rows_par_method, &mut _s);
_s
});
_s
}quote! {
1665 impl #impl_generics ::miniextendr_api::dataframe::ColumnarFrame<#row_name #ty_generics>
1666 for #df_name #ty_generics #where_clause
1667 {
1668 fn from_rows(rows: ::std::vec::Vec<#row_name #ty_generics>) -> Self {
1669 rows.into()
1670 }
1671
1672 #from_rows_par_method
1673 }
1674 };
1675 let enum_reader_early = build_enum_reader(
1682 row_name,
1683 &variant_infos,
1684 &columns,
1685 attrs,
1686 &impl_generics,
1687 &ty_generics,
1688 where_clause,
1689 );
1690 let enum_reader_methods = enum_reader_early.clone().unwrap_or_default();
1694 let row_methods = {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "hidden");
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "to_dataframe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "rows");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::ToTokens::to_tokens(&df_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "rows");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
::quote::ToTokens::to_tokens(&enum_reader_methods, &mut _s);
_s
});
_s
}quote! {
1699 impl #impl_generics #row_name #ty_generics #where_clause {
1700 #[doc(hidden)]
1701 pub fn to_dataframe(rows: ::std::vec::Vec<Self>) -> #df_name #ty_generics {
1702 rows.into()
1703 }
1704
1705 #enum_reader_methods
1706 }
1707 };
1708
1709 let split_method = generate_split_method(
1711 row_name,
1712 &variant_infos,
1713 &impl_generics,
1714 &ty_generics,
1715 where_clause,
1716 );
1717 let marker_impl = {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "markers");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrameRow");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
::quote::__private::TokenStream::new());
_s
}quote! {
1722 impl #impl_generics ::miniextendr_api::markers::DataFrameRow
1723 for #row_name #ty_generics #where_clause {}
1724 };
1725
1726 let payload_fields_impl = {
1731 let mut field_names: Vec<String> = Vec::new();
1734 let mut seen: std::collections::HashSet<String> = std::collections::HashSet::new();
1735 for vi in &variant_infos {
1736 for erf in &vi.fields {
1737 if let EnumResolvedField::Single(data) = erf {
1738 let name = data.col_name.to_string();
1739 if seen.insert(name.clone()) {
1740 field_names.push(name);
1741 }
1742 }
1743 }
1744 }
1745 let tag_str = attrs.tag.as_deref().unwrap_or("");
1746 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "markers");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFramePayloadFields");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_ident(&mut _s, "FIELDS");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_ident(&mut _s, "str");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut field_names, i) = field_names.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let field_names =
match field_names.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&field_names, &mut _s);
}
}
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_ident(&mut _s, "TAG");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_ident(&mut _s, "str");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&tag_str, &mut _s);
::quote::__private::push_semi(&mut _s);
_s
});
_s
}quote! {
1747 impl #impl_generics ::miniextendr_api::markers::DataFramePayloadFields
1748 for #row_name #ty_generics #where_clause
1749 {
1750 const FIELDS: &'static [&'static str] = &[#(#field_names),*];
1751 const TAG: &'static str = #tag_str;
1752 }
1753 }
1754 };
1755
1756 let unit_only_factor_impls = {
1772 let all_unit = variant_infos
1773 .iter()
1774 .all(|vi| vi.shape == VariantShape::Unit);
1775 if all_unit {
1788 let variant_idents: Vec<&syn::Ident> =
1790 variant_infos.iter().map(|vi| &vi.name).collect();
1791 let variant_strs: Vec<String> =
1792 variant_infos.iter().map(|vi| vi.name.to_string()).collect();
1793 let variant_strs_lit: Vec<&str> = variant_strs.iter().map(|s| s.as_str()).collect();
1794 let indices: Vec<i32> = (1i32..=(variant_idents.len() as i32)).collect();
1795
1796 if impl_generics.to_token_stream().is_empty() {
1797 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "factor");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "UnitEnumFactor");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_ident(&mut _s, "FACTOR_LEVELS");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_ident(&mut _s, "str");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut variant_strs_lit, i) =
variant_strs_lit.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let variant_strs_lit =
match variant_strs_lit.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&variant_strs_lit, &mut _s);
}
}
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "to_factor_index");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "i32");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "match");
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut row_name, i) = row_name.quote_into_iter();
let has_iter = has_iter | i;
#[allow(unused_mut)]
let (mut variant_idents, i) =
variant_idents.quote_into_iter();
let has_iter = has_iter | i;
#[allow(unused_mut)]
let (mut indices, i) = indices.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let row_name =
match row_name.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
let variant_idents =
match variant_idents.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
let indices =
match indices.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_idents, &mut _s);
::quote::__private::push_fat_arrow(&mut _s);
::quote::ToTokens::to_tokens(&indices, &mut _s);
::quote::__private::push_comma(&mut _s);
}
}
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "from_factor_index");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "idx");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "i32");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "match");
::quote::__private::push_ident(&mut _s, "idx");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut indices, i) = indices.quote_into_iter();
let has_iter = has_iter | i;
#[allow(unused_mut)]
let (mut row_name, i) = row_name.quote_into_iter();
let has_iter = has_iter | i;
#[allow(unused_mut)]
let (mut variant_idents, i) =
variant_idents.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let indices =
match indices.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
let row_name =
match row_name.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
let variant_idents =
match variant_idents.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&indices, &mut _s);
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_idents, &mut _s);
_s
});
::quote::__private::push_comma(&mut _s);
}
}
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Error");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "convert");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Infallible");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "try_into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SEXP");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "convert");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Infallible");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "use");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "sync");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "OnceLock");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_ident(&mut _s, "LEVELS");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "str");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut variant_strs_lit, i) =
variant_strs_lit.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let variant_strs_lit =
match variant_strs_lit.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&variant_strs_lit, &mut _s);
}
}
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "static");
::quote::__private::push_ident(&mut _s, "LEVELS_CACHE");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "OnceLock");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SEXP");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "OnceLock");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "levels");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_star(&mut _s);
::quote::__private::push_ident(&mut _s, "LEVELS_CACHE");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "get_or_init");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or_or(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "factor");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"build_levels_sexp_cached");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "LEVELS");
_s
});
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "idx");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "i32");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "match");
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut row_name, i) = row_name.quote_into_iter();
let has_iter = has_iter | i;
#[allow(unused_mut)]
let (mut variant_idents, i) =
variant_idents.quote_into_iter();
let has_iter = has_iter | i;
#[allow(unused_mut)]
let (mut indices, i) = indices.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let row_name =
match row_name.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
let variant_idents =
match variant_idents.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
let indices =
match indices.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_idents, &mut _s);
::quote::__private::push_fat_arrow(&mut _s);
::quote::ToTokens::to_tokens(&indices, &mut _s);
::quote::__private::push_comma(&mut _s);
}
}
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Ok");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "factor");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "build_factor");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "idx");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "levels");
_s
});
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "list");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoList");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "into_list");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "list");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "List");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "list");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoList");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_list");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
_s
});
_s
});
_s
});
_s
}quote! {
1799 impl ::miniextendr_api::factor::UnitEnumFactor for #row_name {
1803 const FACTOR_LEVELS: &'static [&'static str] = &[#(#variant_strs_lit),*];
1804 fn to_factor_index(self) -> i32 {
1805 match self {
1806 #(#row_name::#variant_idents => #indices,)*
1807 }
1808 }
1809 fn from_factor_index(idx: i32) -> ::core::option::Option<Self> {
1810 match idx {
1811 #(#indices => ::core::option::Option::Some(#row_name::#variant_idents),)*
1812 _ => ::core::option::Option::None,
1813 }
1814 }
1815 }
1816
1817 impl ::miniextendr_api::IntoR for #row_name {
1820 type Error = ::std::convert::Infallible;
1821 fn try_into_sexp(self) -> ::std::result::Result<::miniextendr_api::SEXP, ::std::convert::Infallible> {
1822 use ::std::sync::OnceLock;
1823 const LEVELS: &[&str] = &[#(#variant_strs_lit),*];
1824 static LEVELS_CACHE: OnceLock<::miniextendr_api::SEXP> =
1825 OnceLock::new();
1826 let levels = *LEVELS_CACHE.get_or_init(|| {
1827 ::miniextendr_api::factor::build_levels_sexp_cached(LEVELS)
1828 });
1829 let idx: i32 = match self {
1830 #(#row_name::#variant_idents => #indices,)*
1831 };
1832 ::std::result::Result::Ok(
1833 ::miniextendr_api::factor::build_factor(&[idx], levels)
1834 )
1835 }
1836 }
1837
1838 impl ::miniextendr_api::list::IntoList for #row_name {
1841 fn into_list(self) -> ::miniextendr_api::list::List {
1842 ::miniextendr_api::list::IntoList::into_list(::std::vec![self])
1843 }
1844 }
1845 }
1846 } else {
1847 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "factor");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "UnitEnumFactor");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_ident(&mut _s, "FACTOR_LEVELS");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_lifetime(&mut _s, "\'static");
::quote::__private::push_ident(&mut _s, "str");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut variant_strs_lit, i) =
variant_strs_lit.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let variant_strs_lit =
match variant_strs_lit.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&variant_strs_lit, &mut _s);
}
}
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "to_factor_index");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_ident(&mut _s, "i32");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "match");
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut row_name, i) = row_name.quote_into_iter();
let has_iter = has_iter | i;
#[allow(unused_mut)]
let (mut variant_idents, i) =
variant_idents.quote_into_iter();
let has_iter = has_iter | i;
#[allow(unused_mut)]
let (mut indices, i) = indices.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let row_name =
match row_name.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
let variant_idents =
match variant_idents.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
let indices =
match indices.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_idents, &mut _s);
::quote::__private::push_fat_arrow(&mut _s);
::quote::ToTokens::to_tokens(&indices, &mut _s);
::quote::__private::push_comma(&mut _s);
}
}
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "from_factor_index");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "idx");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "i32");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "match");
::quote::__private::push_ident(&mut _s, "idx");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut indices, i) = indices.quote_into_iter();
let has_iter = has_iter | i;
#[allow(unused_mut)]
let (mut row_name, i) = row_name.quote_into_iter();
let has_iter = has_iter | i;
#[allow(unused_mut)]
let (mut variant_idents, i) =
variant_idents.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let indices =
match indices.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
let row_name =
match row_name.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
let variant_idents =
match variant_idents.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&indices, &mut _s);
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_idents, &mut _s);
_s
});
::quote::__private::push_comma(&mut _s);
}
}
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "type");
::quote::__private::push_ident(&mut _s, "Error");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "convert");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Infallible");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "try_into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SEXP");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "convert");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Infallible");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "const");
::quote::__private::push_ident(&mut _s, "LEVELS");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "str");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut variant_strs_lit, i) =
variant_strs_lit.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let variant_strs_lit =
match variant_strs_lit.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&variant_strs_lit, &mut _s);
}
}
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "idx");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "i32");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "match");
::quote::__private::push_ident(&mut _s, "self");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut row_name, i) = row_name.quote_into_iter();
let has_iter = has_iter | i;
#[allow(unused_mut)]
let (mut variant_idents, i) =
variant_idents.quote_into_iter();
let has_iter = has_iter | i;
#[allow(unused_mut)]
let (mut indices, i) = indices.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let row_name =
match row_name.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
let variant_idents =
match variant_idents.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
let indices =
match indices.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_idents, &mut _s);
::quote::__private::push_fat_arrow(&mut _s);
::quote::ToTokens::to_tokens(&indices, &mut _s);
::quote::__private::push_comma(&mut _s);
}
}
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Ok");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "factor");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"build_factor_with_levels");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "idx");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "LEVELS");
_s
});
_s
});
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "list");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoList");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "into_list");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "list");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "List");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "list");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoList");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_list");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "self");
_s
});
_s
});
_s
});
_s
});
_s
}quote! {
1852 impl #impl_generics ::miniextendr_api::factor::UnitEnumFactor
1854 for #row_name #ty_generics #where_clause
1855 {
1856 const FACTOR_LEVELS: &'static [&'static str] = &[#(#variant_strs_lit),*];
1857 fn to_factor_index(self) -> i32 {
1858 match self {
1859 #(#row_name::#variant_idents => #indices,)*
1860 }
1861 }
1862 fn from_factor_index(idx: i32) -> ::core::option::Option<Self> {
1863 match idx {
1864 #(#indices => ::core::option::Option::Some(#row_name::#variant_idents),)*
1865 _ => ::core::option::Option::None,
1866 }
1867 }
1868 }
1869
1870 impl #impl_generics ::miniextendr_api::IntoR
1874 for #row_name #ty_generics #where_clause
1875 {
1876 type Error = ::std::convert::Infallible;
1877 fn try_into_sexp(self) -> ::std::result::Result<::miniextendr_api::SEXP, ::std::convert::Infallible> {
1878 const LEVELS: &[&str] = &[#(#variant_strs_lit),*];
1879 let idx: i32 = match self {
1880 #(#row_name::#variant_idents => #indices,)*
1881 };
1882 ::std::result::Result::Ok(
1883 ::miniextendr_api::factor::build_factor_with_levels(&[idx], LEVELS)
1884 )
1885 }
1886 }
1887
1888 impl #impl_generics ::miniextendr_api::list::IntoList
1890 for #row_name #ty_generics #where_clause
1891 {
1892 fn into_list(self) -> ::miniextendr_api::list::List {
1893 ::miniextendr_api::list::IntoList::into_list(::std::vec![self])
1894 }
1895 }
1896 }
1897 }
1898 } else {
1899 TokenStream::new()
1900 }
1901 };
1902 let enum_reader = enum_reader_early;
1907
1908 let has_par_builder = !from_rows_par_method.is_empty();
1919 let rows_into_dataframe_par_body = if has_par_builder {
1920 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "convert");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ColumnSource");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_dataframe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&df_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ColumnarFrame");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from_rows_par");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "rows");
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
}quote! {
1921 ::miniextendr_api::convert::ColumnSource::into_dataframe(
1922 <#df_name #ty_generics as ::miniextendr_api::dataframe::ColumnarFrame<
1923 #row_name #ty_generics,
1924 >>::from_rows_par(rows),
1925 )
1926 }
1927 } else {
1928 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "rows_into_dataframe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "rows");
_s
});
_s
}quote! { Self::rows_into_dataframe(rows) }
1929 };
1930
1931 let reader_override = if let Some(ref reader_ts) = enum_reader {
1933 let has_struct_field_any = variant_infos.iter().any(|vi| {
1935 vi.fields
1936 .iter()
1937 .any(|f| #[allow(non_exhaustive_omitted_patterns)] match f {
EnumResolvedField::Struct(_) => true,
_ => false,
}matches!(f, EnumResolvedField::Struct(_)))
1938 });
1939 let par_reader_body = if has_struct_field_any {
1940 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "try_from_dataframe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__df");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "as_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
_s
}quote! { Self::try_from_dataframe(__df.as_sexp()) }
1941 } else {
1942 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "try_from_dataframe_par");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__df");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "as_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
_s
}quote! { Self::try_from_dataframe_par(__df.as_sexp()) }
1943 };
1944 let _ = reader_ts; {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "rows_from_dataframe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__df");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrame");
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrameError");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"try_from_dataframe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__df");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "as_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map_err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrameError");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Conversion");
_s
});
_s
});
_s
});
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "__dataframe_row_when_rayon");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s,
"rows_from_dataframe_par");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__df");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrame");
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrameError");
::quote::__private::push_shr(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&par_reader_body, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map_err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrameError");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Conversion");
_s
});
_s
});
_s
});
_s
});
_s
}quote! {
1946 fn rows_from_dataframe(
1947 __df: &::miniextendr_api::dataframe::DataFrame,
1948 ) -> ::core::option::Option<::core::result::Result<::std::vec::Vec<Self>, ::miniextendr_api::dataframe::DataFrameError>> {
1949 ::core::option::Option::Some(
1950 <#row_name #ty_generics>::try_from_dataframe(__df.as_sexp())
1951 .map_err(::miniextendr_api::dataframe::DataFrameError::Conversion)
1952 )
1953 }
1954
1955 ::miniextendr_api::__dataframe_row_when_rayon! {
1956 fn rows_from_dataframe_par(
1957 __df: &::miniextendr_api::dataframe::DataFrame,
1958 ) -> ::core::option::Option<::core::result::Result<::std::vec::Vec<Self>, ::miniextendr_api::dataframe::DataFrameError>> {
1959 ::core::option::Option::Some(
1960 #par_reader_body
1961 .map_err(::miniextendr_api::dataframe::DataFrameError::Conversion)
1962 )
1963 }
1964 }
1965 }
1966 } else {
1967 TokenStream::new()
1968 };
1969
1970 let datarow_convert_impl = {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrameRowConvert");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "rows_into_dataframe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "rows");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrame");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrameError");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "convert");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ColumnSource");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_dataframe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "to_dataframe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "rows");
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"__dataframe_row_when_rayon");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s,
"rows_into_dataframe_par");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "rows");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrame");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrameError");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&rows_into_dataframe_par_body,
&mut _s);
_s
});
_s
});
::quote::ToTokens::to_tokens(&reader_override, &mut _s);
_s
});
_s
}quote! {
1971 impl #impl_generics ::miniextendr_api::dataframe::DataFrameRowConvert
1972 for #row_name #ty_generics #where_clause
1973 {
1974 fn rows_into_dataframe(
1975 rows: ::std::vec::Vec<Self>,
1976 ) -> ::core::result::Result<
1977 ::miniextendr_api::dataframe::DataFrame,
1978 ::miniextendr_api::dataframe::DataFrameError,
1979 > {
1980 ::miniextendr_api::convert::ColumnSource::into_dataframe(
1981 <#row_name #ty_generics>::to_dataframe(rows),
1982 )
1983 }
1984
1985 ::miniextendr_api::__dataframe_row_when_rayon! {
1986 fn rows_into_dataframe_par(
1987 rows: ::std::vec::Vec<Self>,
1988 ) -> ::core::result::Result<
1989 ::miniextendr_api::dataframe::DataFrame,
1990 ::miniextendr_api::dataframe::DataFrameError,
1991 > {
1992 #rows_into_dataframe_par_body
1993 }
1994 }
1995
1996 #reader_override
1997 }
1998 };
1999 Ok({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&dataframe_struct, &mut _s);
::quote::ToTokens::to_tokens(&into_dataframe_impl, &mut _s);
::quote::ToTokens::to_tokens(&from_vec_impl, &mut _s);
::quote::ToTokens::to_tokens(&df_methods, &mut _s);
::quote::ToTokens::to_tokens(¶llel_columns_item, &mut _s);
::quote::ToTokens::to_tokens(&row_methods, &mut _s);
::quote::ToTokens::to_tokens(&split_method, &mut _s);
::quote::ToTokens::to_tokens(&marker_impl, &mut _s);
::quote::ToTokens::to_tokens(&payload_fields_impl, &mut _s);
::quote::ToTokens::to_tokens(&datarow_convert_impl, &mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut struct_assertions, i) = struct_assertions.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let struct_assertions =
match struct_assertions.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&struct_assertions, &mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut payload_collision_assertions, i) =
payload_collision_assertions.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let payload_collision_assertions =
match payload_collision_assertions.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&payload_collision_assertions,
&mut _s);
}
}
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut sibling_collision_assertions, i) =
sibling_collision_assertions.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let sibling_collision_assertions =
match sibling_collision_assertions.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&sibling_collision_assertions,
&mut _s);
}
}
::quote::ToTokens::to_tokens(&unit_only_factor_impls, &mut _s);
_s
}quote! {
2002 #dataframe_struct
2003 #into_dataframe_impl
2004 #from_vec_impl
2005 #df_methods
2006 #parallel_columns_item
2007 #row_methods
2008 #split_method
2009 #marker_impl
2010 #payload_fields_impl
2011 #datarow_convert_impl
2012 #(#struct_assertions)*
2013 #(#payload_collision_assertions)*
2014 #(#sibling_collision_assertions)*
2015 #unit_only_factor_impls
2016 })
2017 }
2019
2020fn enum_elem_idents(pos: usize, n: usize) -> Vec<syn::Ident> {
2026 expanded_elem_idents(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("f{0}", pos))
})format!("f{pos}"), n)
2027}
2028
2029fn expanded_elem_prelude(vi: &VariantInfo) -> TokenStream {
2033 let lets: Vec<TokenStream> = vi
2034 .fields
2035 .iter()
2036 .enumerate()
2037 .filter_map(|(pos, erf)| match erf {
2038 EnumResolvedField::ExpandedFixed(data) => {
2039 let binding = &data.binding;
2040 let elems = enum_elem_idents(pos, data.len);
2041 Some(fixed_array_elems(
2042 &{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
}quote! { #binding },
2043 data.borrowed,
2044 &data.elem_ty,
2045 &elems,
2046 ))
2047 }
2048 EnumResolvedField::ExpandedVec(data) => {
2049 let binding = &data.binding;
2050 let elems = enum_elem_idents(pos, data.width);
2051 let iter = match ::quote::__private::IdentFragmentAdapter(&pos) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__mxv_f{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__mxv_f{}", pos);
2052 Some(width_elems(
2053 &{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
}quote! { #binding },
2054 data.borrowed,
2055 &data.elem_ty,
2056 &iter,
2057 &elems,
2058 ))
2059 }
2060 _ => None,
2061 })
2062 .collect();
2063 {
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut lets, i) = lets.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let lets =
match lets.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&lets, &mut _s);
}
}
_s
}quote! { #(#lets)* }
2064}
2065fn option_scalar_in_variant_error(ty: &syn::Type) -> syn::Error {
2075 syn::Error::new_spanned(
2076 ty,
2077 "DataFrameRow enum variant fields already become `Option<T>` columns \
2078 (absent for the other variants), so `Option<scalar>` is not supported here. \
2079 Use the bare scalar (`f64`, `String`, …) and express absence by omitting the \
2080 field from the variant, or `#[dataframe(as_list)]` for an opaque list-column.",
2081 )
2082}
2083
2084fn raw_variant_column_error(ty: &syn::Type, padded: bool) -> Option<syn::Error> {
2089 let raw = if option_payload(ty).is_some_and(is_raw_scalar_ty) {
2090 ty
2091 } else {
2092 match classify_field_type(ty).ok()? {
2093 FieldTypeKind::Scalar if is_raw_scalar_ty(ty) => ty,
2094 FieldTypeKind::FixedArray(elem, _) if is_raw_scalar_ty(elem) => elem,
2095 FieldTypeKind::VariableVec(elem)
2096 | FieldTypeKind::BoxedSlice(elem)
2097 | FieldTypeKind::BorrowedSlice(elem)
2098 if padded && is_raw_scalar_ty(elem) =>
2099 {
2100 elem
2101 }
2102 _ => return None,
2103 }
2104 };
2105 Some(raw_na_column_error(
2106 raw,
2107 "enum variant columns are NA in rows of the other variants",
2108 "Use `u16` or `i32` for an integer column; a plain `Vec<u8>` field stays a \
2109 list-column of raw vectors.",
2110 ))
2111}
2112
2113fn generate_split_method(
2124 row_name: &syn::Ident,
2125 variant_infos: &[VariantInfo],
2126 impl_generics: &syn::ImplGenerics<'_>,
2127 ty_generics: &syn::TypeGenerics<'_>,
2128 where_clause: Option<&syn::WhereClause>,
2129) -> TokenStream {
2130 let mut buf_decls: Vec<TokenStream> = Vec::new();
2132 let mut match_arms: Vec<TokenStream> = Vec::new();
2134 let mut df_constructions: Vec<TokenStream> = Vec::new();
2136 let mut df_var_names: Vec<syn::Ident> = Vec::new();
2138 let mut snake_names: Vec<String> = Vec::new();
2140
2141 for vi in variant_infos {
2142 let variant_name = &vi.name;
2143 let snake = naming::to_snake_case(&variant_name.to_string());
2144 snake_names.push(snake.clone());
2145
2146 let df_var = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__{0}_df", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__{}_df", snake);
2147 df_var_names.push(df_var.clone());
2148
2149 let has_auto = vi.fields.iter().any(|f| {
2152 #[allow(non_exhaustive_omitted_patterns)] match f {
EnumResolvedField::AutoExpandVec(_) | EnumResolvedField::Struct(_) =>
true,
_ => false,
}matches!(
2153 f,
2154 EnumResolvedField::AutoExpandVec(_) | EnumResolvedField::Struct(_)
2155 )
2156 });
2157
2158 match vi.shape {
2159 VariantShape::Unit => {
2161 let count_var = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_count", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__s_{}_count", snake);
2162 buf_decls.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&count_var, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "usize");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "0usize");
::quote::__private::push_semi(&mut _s);
_s
}quote! {
2163 let mut #count_var: usize = 0usize;
2164 });
2165
2166 match_arms.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_name, &mut _s);
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&count_var, &mut _s);
::quote::__private::push_add_eq(&mut _s);
::quote::__private::parse(&mut _s, "1");
::quote::__private::push_semi(&mut _s);
_s
});
_s
}quote! {
2167 #row_name::#variant_name => {
2168 #count_var += 1;
2169 }
2170 });
2171
2172 df_constructions.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::ToTokens::to_tokens(&df_var, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "list");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "List");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from_raw_pairs_empty");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "set_class_str");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"data.frame\"");
_s
});
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "set_row_names_int");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&count_var, &mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
2173 let #df_var = ::miniextendr_api::list::List::from_raw_pairs_empty()
2174 .set_class_str(&["data.frame"])
2175 .set_row_names_int(#count_var);
2176 });
2177 }
2178 VariantShape::Named | VariantShape::Tuple => {
2182 for erf in &vi.fields {
2184 match erf {
2185 EnumResolvedField::Single(data) => {
2186 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&crate::naming::unraw(&data.col_name))
{
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}", arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!(
2187 "__s_{}_{}",
2188 snake,
2189 crate::naming::unraw(&data.col_name)
2190 );
2191 let ty = &data.ty;
2192 buf_decls.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
_s
}quote! {
2195 let mut #buf: ::std::vec::Vec<#ty> = ::std::vec::Vec::new();
2196 });
2197 }
2198 EnumResolvedField::ExpandedFixed(data) => {
2199 for i in 1..=data.len {
2200 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&i) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_{2}", arg,
arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span()).or(arg.span())),
},
},
}format_ident!("__s_{}_{}_{}", snake, data.base_name, i);
2201 let elem_ty = &data.elem_ty;
2202 buf_decls.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&elem_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
_s
}quote! {
2203 let mut #buf: ::std::vec::Vec<#elem_ty> = ::std::vec::Vec::new();
2204 });
2205 }
2206 }
2207 EnumResolvedField::ExpandedVec(data) => {
2208 for i in 1..=data.width {
2209 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&i) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_{2}", arg,
arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span()).or(arg.span())),
},
},
}format_ident!("__s_{}_{}_{}", snake, data.base_name, i);
2210 let elem_ty = &data.elem_ty;
2211 buf_decls.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&elem_ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
_s
}quote! {
2212 let mut #buf: ::std::vec::Vec<::core::option::Option<#elem_ty>> = ::std::vec::Vec::new();
2213 });
2214 }
2215 }
2216 EnumResolvedField::AutoExpandVec(data) => {
2217 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}", arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}", snake, data.base_name);
2218 let container_ty = &data.container_ty;
2219 buf_decls.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&container_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
_s
}quote! {
2220 let mut #buf: ::std::vec::Vec<#container_ty> = ::std::vec::Vec::new();
2221 });
2222 }
2223 EnumResolvedField::Map(data) => {
2224 let keys_buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_keys", arg,
arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}_keys", snake, data.base_name);
2225 let vals_buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_values", arg,
arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}_values", snake, data.base_name);
2226 let key_ty = &data.key_ty;
2227 let val_ty = &data.val_ty;
2228 buf_decls.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&keys_buf, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&key_ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&vals_buf, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&val_ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
_s
}quote! {
2229 let mut #keys_buf: ::std::vec::Vec<::std::vec::Vec<#key_ty>> = ::std::vec::Vec::new();
2230 let mut #vals_buf: ::std::vec::Vec<::std::vec::Vec<#val_ty>> = ::std::vec::Vec::new();
2231 });
2232 }
2233 EnumResolvedField::Struct(data) => {
2236 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}", arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}", snake, data.base_name);
2237 let inner_ty = &data.inner_ty;
2238 buf_decls.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&inner_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
_s
}quote! {
2239 let mut #buf: ::std::vec::Vec<#inner_ty> = ::std::vec::Vec::new();
2240 });
2241 }
2242 }
2243 }
2244
2245 let push_stmts: Vec<TokenStream> = vi
2247 .fields
2248 .iter()
2249 .enumerate()
2250 .flat_map(|(pos, erf)| {
2251 let binding = erf.binding();
2252 match erf {
2253 EnumResolvedField::Single(data) => {
2254 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&crate::naming::unraw(&data.col_name))
{
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}", arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}", snake, crate::naming::unraw(&data.col_name));
2255 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
}]))vec![quote! { #buf.push(#binding); }]
2256 }
2257 EnumResolvedField::ExpandedFixed(data) => {
2258 let elems = enum_elem_idents(pos, data.len);
2259 let mut stmts = ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[fixed_array_elems(&{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
}, data.borrowed, &data.elem_ty, &elems)]))vec![fixed_array_elems(
2260 "e! { #binding },
2261 data.borrowed,
2262 &data.elem_ty,
2263 &elems,
2264 )];
2265 stmts.extend(elems.iter().enumerate().map(|(i, elem)| {
2266 let buf =
2267 match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&(i + 1)) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_{2}", arg,
arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span()).or(arg.span())),
},
},
}format_ident!("__s_{}_{}_{}", snake, data.base_name, i + 1);
2268 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&elem, &mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #buf.push(#elem); }
2269 }));
2270 stmts
2271 }
2272 EnumResolvedField::ExpandedVec(data) => {
2273 let elems = enum_elem_idents(pos, data.width);
2274 let iter = match ::quote::__private::IdentFragmentAdapter(&pos) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__mxv_f{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__mxv_f{}", pos);
2275 let mut stmts = ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[width_elems(&{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
}, data.borrowed, &data.elem_ty, &iter, &elems)]))vec![width_elems(
2276 "e! { #binding },
2277 data.borrowed,
2278 &data.elem_ty,
2279 &iter,
2280 &elems,
2281 )];
2282 stmts.extend(elems.iter().enumerate().map(|(i, elem)| {
2283 let buf =
2284 match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&(i + 1)) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_{2}", arg,
arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span()).or(arg.span())),
},
},
}format_ident!("__s_{}_{}_{}", snake, data.base_name, i + 1);
2285 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&elem, &mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! { #buf.push(#elem); }
2286 }));
2287 stmts
2288 }
2289 EnumResolvedField::AutoExpandVec(data) => {
2290 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}", arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}", snake, data.base_name);
2291 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
}]))vec![quote! { #buf.push(#binding); }]
2292 }
2293 EnumResolvedField::Map(data) => {
2294 let keys_buf =
2295 match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_keys", arg,
arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}_keys", snake, data.base_name);
2296 let vals_buf =
2297 match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_values", arg,
arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}_values", snake, data.base_name);
2298 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__mx_keys");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__mx_vals");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&binding, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into_iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "unzip");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::ToTokens::to_tokens(&keys_buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__mx_keys");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::ToTokens::to_tokens(&vals_buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__mx_vals");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}]))vec![quote! {
2300 let (__mx_keys, __mx_vals) = #binding.into_iter().unzip::<_, _, ::std::vec::Vec<_>, ::std::vec::Vec<_>>();
2301 #keys_buf.push(__mx_keys);
2302 #vals_buf.push(__mx_vals);
2303 }]
2304 }
2305 EnumResolvedField::Struct(data) => {
2308 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}", arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}", snake, data.base_name);
2309 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
}]))vec![quote! { #buf.push(#binding); }]
2310 }
2311 }
2312 })
2313 .collect();
2314
2315 let arm = match vi.shape {
2316 VariantShape::Named => {
2317 let mut field_bindings: Vec<TokenStream> = vi
2318 .fields
2319 .iter()
2320 .map(|erf| {
2321 let rust_name = erf.rust_name();
2322 let binding = erf.binding();
2323 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&rust_name, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
}quote! { #rust_name: #binding }
2324 })
2325 .collect();
2326 for skipped in &vi.skipped_fields {
2327 field_bindings.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&skipped, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_underscore(&mut _s);
_s
}quote! { #skipped: _ });
2328 }
2329 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut field_bindings, i) =
field_bindings.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let field_bindings =
match field_bindings.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&field_bindings, &mut _s);
}
}
_s
});
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut push_stmts, i) = push_stmts.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let push_stmts =
match push_stmts.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&push_stmts, &mut _s);
}
}
_s
});
_s
}quote! {
2330 #row_name::#variant_name { #(#field_bindings),* } => {
2331 #(#push_stmts)*
2332 }
2333 }
2334 }
2335 VariantShape::Tuple => {
2336 let bindings: Vec<TokenStream> = vi
2337 .fields
2338 .iter()
2339 .map(|erf| {
2340 let binding = erf.binding();
2341 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&binding, &mut _s);
_s
}quote! { #binding }
2342 })
2343 .collect();
2344 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_name, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut bindings, i) = bindings.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let bindings =
match bindings.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&bindings, &mut _s);
}
}
_s
});
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut push_stmts, i) = push_stmts.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let push_stmts =
match push_stmts.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&push_stmts, &mut _s);
}
}
_s
});
_s
}quote! {
2345 #row_name::#variant_name(#(#bindings),*) => {
2346 #(#push_stmts)*
2347 }
2348 }
2349 }
2350 VariantShape::Unit => {
::core::panicking::panic_fmt(format_args!("internal error: entered unreachable code: {0}",
format_args!("handled above")));
}unreachable!("handled above"),
2351 };
2352 match_arms.push(arm);
2353
2354 if has_auto {
2356 let pairs_var = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__pairs_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__pairs_{}", snake);
2358 let n_var = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__n_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__n_{}", snake);
2359
2360 let len_expr: TokenStream = {
2363 let first_non_dynamic = vi.fields.iter().find(|f| {
2364 !#[allow(non_exhaustive_omitted_patterns)] match f {
EnumResolvedField::AutoExpandVec(_) | EnumResolvedField::Struct(_) =>
true,
_ => false,
}matches!(
2365 f,
2366 EnumResolvedField::AutoExpandVec(_) | EnumResolvedField::Struct(_)
2367 )
2368 });
2369 if let Some(f) = first_non_dynamic {
2370 match f {
2371 EnumResolvedField::Single(data) => {
2372 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&crate::naming::unraw(&data.col_name))
{
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}", arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!(
2373 "__s_{}_{}",
2374 snake,
2375 crate::naming::unraw(&data.col_name)
2376 );
2377 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { #buf.len() }
2378 }
2379 EnumResolvedField::ExpandedFixed(data) => {
2380 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&1usize) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_{2}", arg,
arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span()).or(arg.span())),
},
},
}format_ident!(
2381 "__s_{}_{}_{}",
2382 snake,
2383 data.base_name,
2384 1usize
2385 );
2386 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { #buf.len() }
2387 }
2388 EnumResolvedField::ExpandedVec(data) => {
2389 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&1usize) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_{2}", arg,
arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span()).or(arg.span())),
},
},
}format_ident!(
2390 "__s_{}_{}_{}",
2391 snake,
2392 data.base_name,
2393 1usize
2394 );
2395 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { #buf.len() }
2396 }
2397 EnumResolvedField::AutoExpandVec(_)
2398 | EnumResolvedField::Struct(_) => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
2399 EnumResolvedField::Map(data) => {
2400 let keys_buf =
2401 match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_keys", arg,
arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}_keys", snake, data.base_name);
2402 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&keys_buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { #keys_buf.len() }
2403 }
2404 }
2405 } else {
2406 if let Some(first) = vi.fields.first() {
2408 match first {
2409 EnumResolvedField::AutoExpandVec(data) => {
2410 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}", arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}", snake, data.base_name);
2411 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { #buf.len() }
2412 }
2413 EnumResolvedField::Struct(data) => {
2414 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}", arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}", snake, data.base_name);
2415 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { #buf.len() }
2416 }
2417 _ => {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "0usize");
_s
}quote! { 0usize },
2418 }
2419 } else {
2420 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "0usize");
_s
}quote! { 0usize }
2421 }
2422 }
2423 };
2424
2425 let static_pushes: Vec<TokenStream> = vi
2430 .fields
2431 .iter()
2432 .flat_map(|erf| match erf {
2433 EnumResolvedField::Single(data) => {
2434 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&crate::naming::unraw(&data.col_name))
{
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}", arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}", snake, crate::naming::unraw(&data.col_name));
2435 let col_str = data.col_name.to_string();
2436 let ty = &data.ty;
2437 if data.needs_into_list {
2438 let into_list_column = list_column_fn(ty, false);
2440 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&pairs_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_str, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&into_list_column, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
_s
});
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}]))vec![quote! {
2441 #pairs_var.push((
2442 #col_str.to_string(),
2443 __scope.protect_raw(#into_list_column(#buf)),
2444 ));
2445 }]
2446 } else if data.is_factor {
2447 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&pairs_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_str, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "factor");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FactorOptionVec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into_iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "v");
::quote::__private::push_or(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "v");
_s
});
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "collect");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
_s
});
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}]))vec![quote! {
2449 #pairs_var.push((
2450 #col_str.to_string(),
2451 __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(
2452 ::miniextendr_api::factor::FactorOptionVec::<#ty>::from(
2453 #buf.into_iter().map(|v| ::std::option::Option::Some(v)).collect::<::std::vec::Vec<_>>()
2454 )
2455 )),
2456 ));
2457 }]
2458 } else {
2459 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&pairs_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_str, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
_s
});
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}]))vec![quote! {
2460 #pairs_var.push((
2461 #col_str.to_string(),
2462 __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(#buf)),
2463 ));
2464 }]
2465 }
2466 }
2467 EnumResolvedField::ExpandedFixed(data) => (1..=data.len)
2468 .map(|i| {
2469 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&i) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_{2}", arg,
arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span()).or(arg.span())),
},
},
}format_ident!(
2470 "__s_{}_{}_{}", snake, data.base_name, i
2471 );
2472 let col_str = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_{1}", data.base_name, i))
})format!("{}_{}", data.base_name, i);
2473 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&pairs_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_str, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
_s
});
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
2474 #pairs_var.push((
2475 #col_str.to_string(),
2476 __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(#buf)),
2477 ));
2478 }
2479 })
2480 .collect(),
2481 EnumResolvedField::ExpandedVec(data) => (1..=data.width)
2482 .map(|i| {
2483 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&i) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_{2}", arg,
arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span()).or(arg.span())),
},
},
}format_ident!(
2484 "__s_{}_{}_{}", snake, data.base_name, i
2485 );
2486 let col_str = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_{1}", data.base_name, i))
})format!("{}_{}", data.base_name, i);
2487 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&pairs_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_str, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
_s
});
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
2488 #pairs_var.push((
2489 #col_str.to_string(),
2490 __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(#buf)),
2491 ));
2492 }
2493 })
2494 .collect(),
2495 EnumResolvedField::AutoExpandVec(data) => {
2496 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}", arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}", snake, data.base_name);
2497 let base_str = &data.base_name;
2498 let elem_ty = &data.elem_ty;
2499 let elems_iter =
2500 owned_elems_iter(&{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__row_vec");
_s
}quote! { __row_vec }, data.borrowed, elem_ty);
2501 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__auto");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__max");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__auto");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "v");
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "v");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "max");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "unwrap_or");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "0");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__auto_cols");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&elem_ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "0");
::quote::__private::push_dot2(&mut _s);
::quote::__private::push_ident(&mut _s, "__max");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_or(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "with_capacity");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&n_var, &mut _s);
_s
});
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "collect");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "__row_vec");
::quote::__private::push_ident(&mut _s, "in");
::quote::__private::push_ident(&mut _s, "__auto");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__elems");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&elems_iter, &mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "__acol");
::quote::__private::push_ident(&mut _s, "in");
::quote::__private::push_ident(&mut _s, "__auto_cols");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "iter_mut");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__acol");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "iter");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Iterator");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "next");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__elems");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__ai");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__acol");
_s
});
::quote::__private::push_ident(&mut _s, "in");
::quote::__private::push_ident(&mut _s, "__auto_cols");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into_iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "enumerate");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&pairs_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"{}_{}\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&base_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__ai");
::quote::__private::push_add(&mut _s);
::quote::__private::parse(&mut _s, "1");
_s
});
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__acol");
_s
});
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
_s
}]))vec![quote! {
2502 {
2503 let __auto = #buf;
2504 let __max = __auto.iter().map(|v| v.len()).max().unwrap_or(0);
2505 let mut __auto_cols: ::std::vec::Vec<::std::vec::Vec<::core::option::Option<#elem_ty>>> = (0..__max)
2506 .map(|_| ::std::vec::Vec::with_capacity(#n_var))
2507 .collect();
2508 for __row_vec in __auto {
2509 let mut __elems = #elems_iter;
2510 for __acol in __auto_cols.iter_mut() {
2511 __acol.push(::core::iter::Iterator::next(&mut __elems));
2512 }
2513 }
2514 for (__ai, __acol) in __auto_cols.into_iter().enumerate() {
2515 #pairs_var.push((
2516 ::std::format!("{}_{}", #base_str, __ai + 1),
2517 __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(__acol)),
2518 ));
2519 }
2520 }
2521 }]
2522 }
2523 EnumResolvedField::Map(data) => {
2524 let keys_buf =
2525 match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_keys", arg,
arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}_keys", snake, data.base_name);
2526 let vals_buf =
2527 match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_values", arg,
arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}_values", snake, data.base_name);
2528 let keys_str = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_keys", data.base_name))
})format!("{}_keys", data.base_name);
2529 let vals_str = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_values", data.base_name))
})format!("{}_values", data.base_name);
2530 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&pairs_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&keys_str, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&keys_buf, &mut _s);
_s
});
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
},
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&pairs_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&vals_str, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&vals_buf, &mut _s);
_s
});
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}]))vec![
2531 quote! {
2532 #pairs_var.push((
2533 #keys_str.to_string(),
2534 __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(#keys_buf)),
2535 ));
2536 },
2537 quote! {
2538 #pairs_var.push((
2539 #vals_str.to_string(),
2540 __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(#vals_buf)),
2541 ));
2542 },
2543 ]
2544 }
2545 EnumResolvedField::Struct(data) => {
2549 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}", arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}", snake, data.base_name);
2550 let base_str = &data.base_name;
2551 let inner_ty = &data.inner_ty;
2552 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__inner_df");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&inner_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "to_dataframe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__inner_cols");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "convert");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ColumnSource");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"into_named_columns");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__inner_df");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__inner_col_name");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__inner_col_sexp");
_s
});
::quote::__private::push_ident(&mut _s, "in");
::quote::__private::push_ident(&mut _s, "__inner_cols");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__prefixed");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"{}_{}\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&base_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__inner_col_name");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::ToTokens::to_tokens(&pairs_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__prefixed");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__inner_col_sexp");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
_s
}]))vec![quote! {
2553 {
2554 let __inner_df = <#inner_ty>::to_dataframe(#buf);
2555 let __inner_cols = ::miniextendr_api::convert::ColumnSource::into_named_columns(
2558 __inner_df,
2559 &__scope,
2560 );
2561 for (__inner_col_name, __inner_col_sexp) in __inner_cols {
2562 let __prefixed = ::std::format!("{}_{}", #base_str, __inner_col_name);
2563 #pairs_var.push((__prefixed, __inner_col_sexp));
2564 }
2565 }
2566 }]
2567 }
2568 })
2569 .collect();
2570
2571 df_constructions.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::ToTokens::to_tokens(&n_var, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&len_expr, &mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::ToTokens::to_tokens(&df_var, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "unsafe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "gc_protect");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ProtectScope");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&pairs_var, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "String");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SEXP");
_s
});
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut static_pushes, i) = static_pushes.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let static_pushes =
match static_pushes.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&static_pushes, &mut _s);
}
}
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "list");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "List");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from_raw_pairs");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&pairs_var, &mut _s);
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "set_class_str");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"data.frame\"");
_s
});
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "set_row_names_int");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&n_var, &mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
2572 let #n_var = #len_expr;
2573 let #df_var = unsafe {
2577 let __scope = ::miniextendr_api::gc_protect::ProtectScope::new();
2578 let mut #pairs_var: ::std::vec::Vec<(::std::string::String, ::miniextendr_api::SEXP)> = ::std::vec::Vec::new();
2579 #(#static_pushes)*
2580 ::miniextendr_api::list::List::from_raw_pairs(#pairs_var)
2581 .set_class_str(&["data.frame"])
2582 .set_row_names_int(#n_var)
2583 };
2584 });
2585 } else {
2586 let n_var = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__n_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__n_{}", snake);
2588
2589 let len_expr: TokenStream = if let Some(erf) = vi.fields.first() {
2591 match erf {
2592 EnumResolvedField::Single(data) => {
2593 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&crate::naming::unraw(&data.col_name))
{
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}", arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!(
2594 "__s_{}_{}",
2595 snake,
2596 crate::naming::unraw(&data.col_name)
2597 );
2598 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { #buf.len() }
2599 }
2600 EnumResolvedField::ExpandedFixed(data) => {
2601 let buf =
2602 match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&1usize) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_{2}", arg,
arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span()).or(arg.span())),
},
},
}format_ident!("__s_{}_{}_{}", snake, data.base_name, 1usize);
2603 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { #buf.len() }
2604 }
2605 EnumResolvedField::ExpandedVec(data) => {
2606 let buf =
2607 match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&1usize) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_{2}", arg,
arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span()).or(arg.span())),
},
},
}format_ident!("__s_{}_{}_{}", snake, data.base_name, 1usize);
2608 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { #buf.len() }
2609 }
2610 EnumResolvedField::AutoExpandVec(_) | EnumResolvedField::Struct(_) => {
2613 ::core::panicking::panic("internal error: entered unreachable code")unreachable!()
2614 }
2615 EnumResolvedField::Map(data) => {
2616 let keys_buf =
2617 match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_keys", arg,
arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}_keys", snake, data.base_name);
2618 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&keys_buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { #keys_buf.len() }
2619 }
2620 }
2621 } else {
2622 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "0usize");
_s
}quote! { 0usize }
2624 };
2625
2626 let pairs: Vec<TokenStream> = vi
2631 .fields
2632 .iter()
2633 .flat_map(|erf| match erf {
2634 EnumResolvedField::Single(data) => {
2635 let buf = match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&crate::naming::unraw(&data.col_name))
{
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}", arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}", snake, crate::naming::unraw(&data.col_name));
2636 let col_str = data.col_name.to_string();
2637 let ty = &data.ty;
2638 if data.needs_into_list {
2639 let into_list_column = list_column_fn(ty, false);
2642 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&into_list_column, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
_s
});
_s
});
_s
});
_s
}]))vec![quote! {
2643 (#col_str, __scope.protect_raw(#into_list_column(#buf)))
2644 }]
2645 } else if data.is_factor {
2646 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "factor");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "FactorOptionVec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into_iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "v");
::quote::__private::push_or(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "v");
_s
});
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "collect");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
_s
});
_s
});
_s
});
_s
}]))vec![quote! {
2648 (#col_str, __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(
2649 ::miniextendr_api::factor::FactorOptionVec::<#ty>::from(
2650 #buf.into_iter().map(|v| ::std::option::Option::Some(v)).collect::<::std::vec::Vec<_>>()
2651 )
2652 )))
2653 }]
2654 } else {
2655 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
_s
});
_s
});
_s
});
_s
}]))vec![quote! {
2656 (#col_str, __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(#buf)))
2657 }]
2658 }
2659 }
2660 EnumResolvedField::ExpandedFixed(data) => (1..=data.len)
2661 .map(|i| {
2662 let buf =
2663 match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&i) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_{2}", arg,
arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span()).or(arg.span())),
},
},
}format_ident!("__s_{}_{}_{}", snake, data.base_name, i);
2664 let col_str = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_{1}", data.base_name, i))
})format!("{}_{}", data.base_name, i);
2665 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
_s
});
_s
});
_s
});
_s
}quote! {
2666 (#col_str, __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(#buf)))
2667 }
2668 })
2669 .collect(),
2670 EnumResolvedField::ExpandedVec(data) => (1..=data.width)
2671 .map(|i| {
2672 let buf =
2673 match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&i) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_{2}", arg,
arg, arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span()).or(arg.span())),
},
},
}format_ident!("__s_{}_{}_{}", snake, data.base_name, i);
2674 let col_str = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_{1}", data.base_name, i))
})format!("{}_{}", data.base_name, i);
2675 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&buf, &mut _s);
_s
});
_s
});
_s
});
_s
}quote! {
2676 (#col_str, __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(#buf)))
2677 }
2678 })
2679 .collect(),
2680 EnumResolvedField::AutoExpandVec(_) | EnumResolvedField::Struct(_) => ::core::panicking::panic("internal error: entered unreachable code")unreachable!(),
2682 EnumResolvedField::Map(data) => {
2683 let keys_buf =
2684 match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_keys", arg,
arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}_keys", snake, data.base_name);
2685 let vals_buf =
2686 match ::quote::__private::IdentFragmentAdapter(&snake) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__s_{0}_{1}_values", arg,
arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__s_{}_{}_values", snake, data.base_name);
2687 let keys_str = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_keys", data.base_name))
})format!("{}_keys", data.base_name);
2688 let vals_str = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_values", data.base_name))
})format!("{}_values", data.base_name);
2689 ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
[{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&keys_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&keys_buf, &mut _s);
_s
});
_s
});
_s
});
_s
},
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&vals_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "protect_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&vals_buf, &mut _s);
_s
});
_s
});
_s
});
_s
}]))vec![
2690 quote! {
2691 (#keys_str, __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(#keys_buf)))
2692 },
2693 quote! {
2694 (#vals_str, __scope.protect_raw(::miniextendr_api::IntoR::into_sexp(#vals_buf)))
2695 },
2696 ]
2697 }
2698 })
2699 .collect();
2700
2701 df_constructions.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::ToTokens::to_tokens(&n_var, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&len_expr, &mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::ToTokens::to_tokens(&df_var, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "unsafe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__scope");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "gc_protect");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ProtectScope");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "list");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "List");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from_raw_pairs");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut pairs, i) = pairs.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let pairs =
match pairs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&pairs, &mut _s);
}
}
_s
});
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "set_class_str");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"data.frame\"");
_s
});
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "set_row_names_int");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&n_var, &mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
2702 let #n_var = #len_expr;
2703 let #df_var = unsafe {
2705 let __scope = ::miniextendr_api::gc_protect::ProtectScope::new();
2706 ::miniextendr_api::list::List::from_raw_pairs(::std::vec![
2707 #(#pairs),*
2708 ])
2709 .set_class_str(&["data.frame"])
2710 .set_row_names_int(#n_var)
2711 };
2712 });
2713 }
2714 } }
2716 }
2717
2718 let rooted_constructions: Vec<TokenStream> = df_constructions
2726 .iter()
2727 .zip(df_var_names.iter())
2728 .map(|(construction, var)| {
2729 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&construction, &mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::ToTokens::to_tokens(&var, &mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "unsafe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "BuiltDataFrame");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "adopt_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "IntoR");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "into_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&var, &mut _s);
_s
});
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
2730 #construction
2731 let #var = unsafe {
2734 ::miniextendr_api::dataframe::BuiltDataFrame::adopt_sexp(
2735 ::miniextendr_api::IntoR::into_sexp(#var),
2736 )
2737 };
2738 }
2739 })
2740 .collect();
2741
2742 let shape = if variant_infos.len() == 1 {
2743 let df_var = &df_var_names[0];
2745 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrameShape");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Bare");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&df_var, &mut _s);
_s
});
_s
}quote! {
2746 ::miniextendr_api::dataframe::DataFrameShape::Bare(#df_var)
2747 }
2748 } else {
2749 let outer_pairs: Vec<TokenStream> = snake_names
2751 .iter()
2752 .zip(df_var_names.iter())
2753 .map(|(name, var)| {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "String");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&name, &mut _s);
_s
});
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&var, &mut _s);
_s
});
_s
}quote! { (::std::string::String::from(#name), #var) })
2754 .collect();
2755 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrameShape");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "PerVariantList");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut outer_pairs, i) = outer_pairs.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let outer_pairs =
match outer_pairs.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&outer_pairs, &mut _s);
}
}
_s
});
_s
});
_s
}quote! {
2756 ::miniextendr_api::dataframe::DataFrameShape::PerVariantList(::std::vec![
2757 #(#outer_pairs),*
2758 ])
2759 }
2760 };
2761
2762 let body = {
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut buf_decls, i) = buf_decls.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let buf_decls =
match buf_decls.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&buf_decls, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "__row");
::quote::__private::push_ident(&mut _s, "in");
::quote::__private::push_ident(&mut _s, "rows");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "match");
::quote::__private::push_ident(&mut _s, "__row");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut match_arms, i) = match_arms.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let match_arms =
match match_arms.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&match_arms, &mut _s);
}
}
_s
});
_s
});
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut rooted_constructions, i) =
rooted_constructions.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let rooted_constructions =
match rooted_constructions.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&rooted_constructions, &mut _s);
}
}
::quote::ToTokens::to_tokens(&shape, &mut _s);
_s
}quote! {
2763 #(#buf_decls)*
2764 for __row in rows {
2765 match __row {
2766 #(#match_arms)*
2767 }
2768 }
2769 #(#rooted_constructions)*
2770 #shape
2771 };
2772
2773 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "impl");
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "hidden");
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "to_dataframe_split");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "rows");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrameShape");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&body, &mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "impl");
::quote::ToTokens::to_tokens(&impl_generics, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrameRowSplit");
::quote::__private::push_ident(&mut _s, "for");
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::ToTokens::to_tokens(&ty_generics, &mut _s);
::quote::ToTokens::to_tokens(&where_clause, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s,
"rows_into_dataframe_split");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "rows");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrameShape");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"to_dataframe_split");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "rows");
_s
});
_s
});
_s
});
_s
}quote! {
2774 impl #impl_generics #row_name #ty_generics #where_clause {
2775 #[doc(hidden)]
2780 pub fn to_dataframe_split(
2781 rows: ::std::vec::Vec<Self>,
2782 ) -> ::miniextendr_api::dataframe::DataFrameShape {
2783 #body
2784 }
2785 }
2786
2787 impl #impl_generics ::miniextendr_api::dataframe::DataFrameRowSplit
2791 for #row_name #ty_generics #where_clause
2792 {
2793 fn rows_into_dataframe_split(
2794 rows: ::std::vec::Vec<Self>,
2795 ) -> ::miniextendr_api::dataframe::DataFrameShape {
2796 Self::to_dataframe_split(rows)
2797 }
2798 }
2799 }
2800}
2801fn enum_field_reader_capable(erf: &EnumResolvedField) -> bool {
2820 match erf {
2821 EnumResolvedField::Single(data) => {
2822 !data.needs_into_list && (data.is_factor || is_reader_scalar_ty(&data.ty))
2823 }
2824 EnumResolvedField::ExpandedFixed(data) => {
2825 !data.borrowed && is_reader_scalar_ty(&data.elem_ty)
2826 }
2827 EnumResolvedField::ExpandedVec(data) => {
2828 !data.borrowed && is_bare_reader_scalar_ty(&data.elem_ty)
2829 }
2830 EnumResolvedField::AutoExpandVec(data) => {
2831 !data.borrowed && is_bare_reader_scalar_ty(&data.elem_ty)
2832 }
2833 EnumResolvedField::Map(data) => {
2834 is_bare_reader_scalar_ty(&data.key_ty) && is_bare_reader_scalar_ty(&data.val_ty)
2835 }
2836 EnumResolvedField::Struct(_) => true, }
2838}
2839
2840fn enum_reader_field_value(
2846 erf: &EnumResolvedField,
2847 variant_name_str: &str,
2848 take: bool,
2849) -> TokenStream {
2850 let cell = |col_var: &syn::Ident| {
2851 if take {
2852 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "take");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&col_var, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
_s
});
_s
});
_s
}quote! { ::core::option::Option::take(&mut #col_var[__i]) }
2853 } else {
2854 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "clone");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Clone");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "clone");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::ToTokens::to_tokens(&col_var, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
_s
});
_s
});
_s
}quote! { ::core::clone::Clone::clone(&#col_var[__i]) }
2855 }
2856 };
2857 let required = |col_var: &syn::Ident, what: &str, col_name_str: &str| {
2858 let cell = cell(col_var);
2859 let msg = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("variant `{{}}` row {{}}: {0} `{{}}` is NA but field is required",
what))
})format!("variant `{{}}` row {{}}: {what} `{{}}` is NA but field is required");
2860 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&cell, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "ok_or_else");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or_or(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&msg, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&variant_name_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&col_name_str, &mut _s);
_s
});
_s
});
::quote::__private::push_question(&mut _s);
_s
}quote! {
2861 #cell.ok_or_else(|| ::std::format!(#msg, #variant_name_str, __i, #col_name_str))?
2862 }
2863 };
2864 match erf {
2865 EnumResolvedField::Single(data) => {
2866 let col_var = match ::quote::__private::IdentFragmentAdapter(&crate::naming::unraw(&data.col_name))
{
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__col_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__col_{}", crate::naming::unraw(&data.col_name));
2867 let what = if data.is_factor {
2868 "factor column"
2869 } else {
2870 "column"
2871 };
2872 required(&col_var, what, &data.col_name.to_string())
2873 }
2874 EnumResolvedField::ExpandedFixed(data) => {
2875 let elem_ty = &data.elem_ty;
2876 let len = data.len;
2877 let slots: Vec<TokenStream> = (1..=data.len)
2878 .map(|k| {
2879 let col_var = match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&k) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__col_{0}_{1}", arg,
arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__col_{}_{}", data.base_name, k);
2880 required(&col_var, "column", &::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_{1}", data.base_name, k))
})format!("{}_{}", data.base_name, k))
2881 })
2882 .collect();
2883 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__arr");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&elem_ty, &mut _s);
::quote::__private::push_semi(&mut _s);
::quote::ToTokens::to_tokens(&len, &mut _s);
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut slots, i) = slots.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let slots =
match slots.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&slots, &mut _s);
}
}
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "__arr");
_s
});
_s
}quote! { { let __arr: [#elem_ty; #len] = [ #(#slots),* ]; __arr } }
2884 }
2885 EnumResolvedField::ExpandedVec(data) => {
2886 let elem_ty = &data.elem_ty;
2887 let slots: Vec<TokenStream> = (1..=data.width)
2888 .map(|k| cell(&match ::quote::__private::IdentFragmentAdapter(&data.base_name) {
arg =>
match ::quote::__private::IdentFragmentAdapter(&k) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__col_{0}_{1}", arg,
arg))
}),
::quote::__private::Option::None.or(arg.span()).or(arg.span())),
},
}format_ident!("__col_{}_{}", data.base_name, k)))
2889 .collect();
2890 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut slots, i) = slots.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let slots =
match slots.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&slots, &mut _s);
}
}
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into_iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "flatten");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "collect");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&elem_ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { [ #(#slots),* ].into_iter().flatten().collect::<::std::vec::Vec<#elem_ty>>().into() }
2891 }
2892 EnumResolvedField::AutoExpandVec(data) => {
2893 let elem_ty = &data.elem_ty;
2894 let cols_var = match ::quote::__private::IdentFragmentAdapter(&data.base_name.replace('-',
"_")) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__aev_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__aev_{}", data.base_name.replace('-', "_"));
2895 let cells = if take {
2896 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "iter");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Iterator");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "filter_map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&cols_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "iter_mut");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "__c");
::quote::__private::push_or(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "take");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__c");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
_s
});
_s
});
_s
});
_s
});
_s
}quote! {
2897 ::core::iter::Iterator::filter_map(#cols_var.iter_mut(), |__c| {
2898 ::core::option::Option::take(&mut __c[__i])
2899 })
2900 }
2901 } else {
2902 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "iter");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Iterator");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "filter_map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&cols_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "__c");
::quote::__private::push_or(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "clone");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Clone");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "clone");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "__c");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
_s
});
_s
});
_s
});
_s
});
_s
}quote! {
2903 ::core::iter::Iterator::filter_map(#cols_var.iter(), |__c| {
2904 ::core::clone::Clone::clone(&__c[__i])
2905 })
2906 }
2907 };
2908 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&cells, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "collect");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&elem_ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
}quote! { #cells.collect::<::std::vec::Vec<#elem_ty>>().into() }
2909 }
2910 EnumResolvedField::Map(data) => {
2911 let keys_var = match ::quote::__private::IdentFragmentAdapter(&data.base_name.replace('-',
"_")) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__mapcol_{0}_keys", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__mapcol_{}_keys", data.base_name.replace('-', "_"));
2912 let vals_var = match ::quote::__private::IdentFragmentAdapter(&data.base_name.replace('-',
"_")) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__mapcol_{0}_values",
arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__mapcol_{}_values", data.base_name.replace('-', "_"));
2913 let base = &data.base_name;
2914 let map_ty = &data.map_ty;
2915 let keys = required(&keys_var, "map column", base);
2916 let vals = required(&vals_var, "map column", base);
2917 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__keys");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&keys, &mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__vals");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&vals, &mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "if");
::quote::__private::push_ident(&mut _s, "__keys");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_ne(&mut _s);
::quote::__private::push_ident(&mut _s, "__vals");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "return");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"variant `{}` row {}: map column `{}` has {} keys but {} values\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&variant_name_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&base, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__keys");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__vals");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "__keys");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into_iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "zip");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__vals");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "collect");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&map_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
_s
}quote! {
2918 {
2919 let __keys = #keys;
2920 let __vals = #vals;
2921 if __keys.len() != __vals.len() {
2922 return ::core::result::Result::Err(::std::format!(
2923 "variant `{}` row {}: map column `{}` has {} keys but {} values",
2924 #variant_name_str, __i, #base, __keys.len(), __vals.len()
2925 ));
2926 }
2927 __keys.into_iter().zip(__vals).collect::<#map_ty>()
2928 }
2929 }
2930 }
2931 EnumResolvedField::Struct(data) => {
2932 let vec_var = match ::quote::__private::IdentFragmentAdapter(&data.base_name.replace('-',
"_")) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__sf_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__sf_{}", data.base_name.replace('-', "_"));
2933 let base = &data.base_name;
2934 let cell = cell(&vec_var);
2935 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&cell, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "ok_or_else");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or_or(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"variant `{}` row {}: struct field `{}` is absent for this variant\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&variant_name_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&base, &mut _s);
_s
});
_s
});
::quote::__private::push_question(&mut _s);
_s
}quote! {
2936 #cell.ok_or_else(|| ::std::format!(
2937 "variant `{}` row {}: struct field `{}` is absent for this variant",
2938 #variant_name_str, __i, #base
2939 ))?
2940 }
2941 }
2942 }
2943}
2944
2945#[allow(clippy::too_many_arguments)]
2952fn build_enum_reader(
2953 row_name: &syn::Ident,
2954 variant_infos: &[VariantInfo],
2955 columns: &[ResolvedColumn],
2956 attrs: &DataFrameAttrs,
2957 _impl_generics: &syn::ImplGenerics<'_>,
2958 _ty_generics: &syn::TypeGenerics<'_>,
2959 _where_clause: Option<&syn::WhereClause>,
2960) -> Option<TokenStream> {
2961 let tag_col_name = attrs.tag.as_deref()?;
2963
2964 if variant_infos.iter().any(|vi| !vi.skipped_fields.is_empty()) {
2966 return None;
2967 }
2968
2969 if attrs.conflicts.is_some() {
2971 return None;
2972 }
2973
2974 if !variant_infos
2976 .iter()
2977 .all(|vi| vi.fields.iter().all(enum_field_reader_capable))
2978 {
2979 return None;
2980 }
2981
2982 let par_delegates = variant_infos.iter().any(|vi| {
2986 vi.fields.iter().any(|f| {
2987 #[allow(non_exhaustive_omitted_patterns)] match f {
EnumResolvedField::Struct(_) => true,
_ => false,
}matches!(f, EnumResolvedField::Struct(_))
2988 || #[allow(non_exhaustive_omitted_patterns)] match f {
EnumResolvedField::Single(d) if d.is_factor => true,
_ => false,
}matches!(f, EnumResolvedField::Single(d) if d.is_factor)
2989 })
2990 });
2991
2992 let mut extracts: Vec<TokenStream> = Vec::new();
2998
2999 let tag_var = ::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__tag"))
}), ::quote::__private::Option::None)format_ident!("__tag");
3001 extracts.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::ToTokens::to_tokens(&tag_var, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "String");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__tag_sexp");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__view");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "column_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&tag_col_name, &mut _s);
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "ok_or_else");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or_or(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"tag column `{}` is missing from the data.frame\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&tag_col_name, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_question(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "String");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from_r");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "TryFromSexp");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "try_from_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__tag_sexp");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map_err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "e");
::quote::__private::push_or(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"tag column `{}` could not be read as strings: {}\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&tag_col_name, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "e");
_s
});
_s
});
::quote::__private::push_question(&mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "if");
::quote::ToTokens::to_tokens(&tag_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_ne(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "return");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"tag column `{}` has length {} but data.frame has {} rows\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&tag_col_name, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&tag_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
}quote! {
3002 let #tag_var: ::std::vec::Vec<::std::string::String> = {
3003 let __tag_sexp = __view.column_raw(#tag_col_name).ok_or_else(|| {
3004 ::std::format!("tag column `{}` is missing from the data.frame", #tag_col_name)
3005 })?;
3006 <::std::vec::Vec<::std::string::String> as ::miniextendr_api::from_r::TryFromSexp>::try_from_sexp(__tag_sexp)
3007 .map_err(|e| ::std::format!(
3008 "tag column `{}` could not be read as strings: {}",
3009 #tag_col_name, e
3010 ))?
3011 };
3012 if #tag_var.len() != __nrow {
3013 return ::core::result::Result::Err(::std::format!(
3014 "tag column `{}` has length {} but data.frame has {} rows",
3015 #tag_col_name, #tag_var.len(), __nrow
3016 ));
3017 }
3018 });
3019
3020 let mut struct_col_names: std::collections::HashSet<String> = std::collections::HashSet::new();
3023 for vi in variant_infos {
3024 for erf in &vi.fields {
3025 if let EnumResolvedField::Struct(data) = erf {
3026 struct_col_names.insert(data.base_name.clone());
3027 }
3028 }
3029 }
3030
3031 let mut map_col_names: std::collections::HashSet<String> = std::collections::HashSet::new();
3035 for vi in variant_infos {
3036 for erf in &vi.fields {
3037 if let EnumResolvedField::Map(data) = erf {
3038 map_col_names.insert(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_keys", data.base_name))
})format!("{}_keys", data.base_name));
3039 map_col_names.insert(::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_values", data.base_name))
})format!("{}_values", data.base_name));
3040 }
3041 }
3042 }
3043
3044 for col in columns {
3045 let col_name_str = col.col_name.to_string();
3046 let col_var = match ::quote::__private::IdentFragmentAdapter(&crate::naming::unraw(&col.col_name))
{
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__col_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__col_{}", crate::naming::unraw(&col.col_name));
3047 let ty = &col.ty;
3048
3049 if struct_col_names.contains(&col_name_str) {
3051 continue;
3052 }
3053 if map_col_names.contains(&col_name_str) {
3055 continue;
3056 }
3057
3058 if col.is_factor {
3059 extracts.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&col_var, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__col_sexp");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__view");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "column_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_name_str, &mut _s);
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "ok_or_else");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or_or(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"column `{}` is missing from the data.frame\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&col_name_str, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_question(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "factor");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"unit_factor_option_vec_from_sexp");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__col_sexp");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map_err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "e");
::quote::__private::push_or(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"factor column `{}` could not be read: {}\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&col_name_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "e");
_s
});
_s
});
::quote::__private::push_question(&mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "if");
::quote::ToTokens::to_tokens(&col_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_ne(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "return");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"column `{}` has length {} but data.frame has {} rows\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&col_name_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&col_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
}quote! {
3061 let mut #col_var: ::std::vec::Vec<::core::option::Option<#ty>> = {
3062 let __col_sexp = __view.column_raw(#col_name_str).ok_or_else(|| {
3063 ::std::format!("column `{}` is missing from the data.frame", #col_name_str)
3064 })?;
3065 ::miniextendr_api::factor::unit_factor_option_vec_from_sexp::<#ty>(__col_sexp)
3066 .map_err(|e| ::std::format!(
3067 "factor column `{}` could not be read: {}",
3068 #col_name_str, e
3069 ))?
3070 };
3071 if #col_var.len() != __nrow {
3072 return ::core::result::Result::Err(::std::format!(
3073 "column `{}` has length {} but data.frame has {} rows",
3074 #col_name_str, #col_var.len(), __nrow
3075 ));
3076 }
3077 });
3078 } else {
3079 let opt_ty: syn::Type = ::syn::__private::parse_quote({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&ty, &mut _s);
::quote::__private::push_gt(&mut _s);
_s
})syn::parse_quote!(::core::option::Option<#ty>);
3081 extracts.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&col_var, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&opt_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__col_sexp");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__view");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "column_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_name_str, &mut _s);
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "ok_or_else");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or_or(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"column `{}` is missing from the data.frame\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&col_name_str, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_question(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&opt_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from_r");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "TryFromSexp");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "try_from_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__col_sexp");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map_err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "e");
::quote::__private::push_or(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"column `{}` could not be converted to the expected type: {}\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&col_name_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "e");
_s
});
_s
});
::quote::__private::push_question(&mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "if");
::quote::ToTokens::to_tokens(&col_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_ne(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "return");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"column `{}` has length {} but data.frame has {} rows\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&col_name_str, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&col_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
}quote! {
3082 let mut #col_var: ::std::vec::Vec<#opt_ty> = {
3083 let __col_sexp = __view.column_raw(#col_name_str).ok_or_else(|| {
3084 ::std::format!("column `{}` is missing from the data.frame", #col_name_str)
3085 })?;
3086 <::std::vec::Vec<#opt_ty> as ::miniextendr_api::from_r::TryFromSexp>::try_from_sexp(__col_sexp)
3087 .map_err(|e| ::std::format!(
3088 "column `{}` could not be converted to the expected type: {}",
3089 #col_name_str, e
3090 ))?
3091 };
3092 if #col_var.len() != __nrow {
3093 return ::core::result::Result::Err(::std::format!(
3094 "column `{}` has length {} but data.frame has {} rows",
3095 #col_name_str, #col_var.len(), __nrow
3096 ));
3097 }
3098 });
3099 }
3100 }
3101
3102 let mut auto_expand_base_names: Vec<(String, syn::Type)> = Vec::new();
3105 let mut seen_auto: std::collections::HashSet<String> = std::collections::HashSet::new();
3106 for vi in variant_infos {
3107 for erf in &vi.fields {
3108 if let EnumResolvedField::AutoExpandVec(data) = erf
3109 && seen_auto.insert(data.base_name.clone())
3110 {
3111 auto_expand_base_names.push((data.base_name.clone(), data.elem_ty.clone()));
3112 }
3113 }
3114 }
3115
3116 for (base_name, elem_ty) in &auto_expand_base_names {
3117 let cols_var = match ::quote::__private::IdentFragmentAdapter(&base_name.replace('-', "_")) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__aev_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__aev_{}", base_name.replace('-', "_"));
3118 let opt_elem_ty: syn::Type = ::syn::__private::parse_quote({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&elem_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
_s
})syn::parse_quote!(::core::option::Option<#elem_ty>);
3119 extracts.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&cols_var, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&opt_elem_ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__cols");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&opt_elem_ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__k");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_ident(&mut _s, "usize");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "1");
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "loop");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__cn");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "\"{}_{}\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&base_name, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__k");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "match");
::quote::__private::push_ident(&mut _s, "__view");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "column_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "__cn");
_s
});
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__s");
_s
});
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__c");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&opt_elem_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&opt_elem_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from_r");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "TryFromSexp");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "try_from_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__s");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map_err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "e");
::quote::__private::push_or(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"column `{}` could not be converted: {}\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__cn");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "e");
_s
});
_s
});
::quote::__private::push_question(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "if");
::quote::__private::push_ident(&mut _s, "__c");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_ne(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "return");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"column `{}` has length {} but data.frame has {} rows\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__cn");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__c");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "__cols");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__c");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "__k");
::quote::__private::push_add_eq(&mut _s);
::quote::__private::parse(&mut _s, "1");
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_ident(&mut _s, "break");
::quote::__private::push_comma(&mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "__cols");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
3120 let mut #cols_var: ::std::vec::Vec<::std::vec::Vec<#opt_elem_ty>> = {
3121 let mut __cols: ::std::vec::Vec<::std::vec::Vec<#opt_elem_ty>> = ::std::vec::Vec::new();
3122 let mut __k: usize = 1;
3123 loop {
3124 let __cn = ::std::format!("{}_{}", #base_name, __k);
3125 match __view.column_raw(&__cn) {
3126 ::core::option::Option::Some(__s) => {
3127 let __c: ::std::vec::Vec<#opt_elem_ty> =
3128 <::std::vec::Vec<#opt_elem_ty> as ::miniextendr_api::from_r::TryFromSexp>::try_from_sexp(__s)
3129 .map_err(|e| ::std::format!(
3130 "column `{}` could not be converted: {}",
3131 __cn, e
3132 ))?;
3133 if __c.len() != __nrow {
3134 return ::core::result::Result::Err(::std::format!(
3135 "column `{}` has length {} but data.frame has {} rows",
3136 __cn, __c.len(), __nrow
3137 ));
3138 }
3139 __cols.push(__c);
3140 __k += 1;
3141 }
3142 ::core::option::Option::None => break,
3143 }
3144 }
3145 __cols
3146 };
3147 });
3148 }
3149
3150 let mut seen_struct: std::collections::HashSet<String> = std::collections::HashSet::new();
3156 for vi in variant_infos {
3157 for erf in &vi.fields {
3158 if let EnumResolvedField::Struct(data) = erf
3159 && seen_struct.insert(data.base_name.clone())
3160 {
3161 let inner_ty = &data.inner_ty;
3162 let base = &data.base_name;
3163 let prefix_lit = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_", data.base_name))
})format!("{}_", data.base_name);
3164 let vec_var = match ::quote::__private::IdentFragmentAdapter(&data.base_name.replace('-',
"_")) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__sf_{0}", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__sf_{}", data.base_name.replace('-', "_"));
3165
3166 let contributing_variant_names: Vec<String> = variant_infos
3168 .iter()
3169 .filter(|vi2| {
3170 vi2.fields.iter().any(
3171 |f| #[allow(non_exhaustive_omitted_patterns)] match f {
EnumResolvedField::Struct(d) if d.base_name == *base => true,
_ => false,
}matches!(f, EnumResolvedField::Struct(d) if d.base_name == *base),
3172 )
3173 })
3174 .map(|vi2| vi2.name.to_string())
3175 .collect();
3176
3177 extracts.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&vec_var, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&inner_ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__contributing");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "str");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut contributing_variant_names, i) =
contributing_variant_names.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let contributing_variant_names =
match contributing_variant_names.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&contributing_variant_names,
&mut _s);
}
}
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__present_indices");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "usize");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "0");
::quote::__private::push_dot2(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "filter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "__contributing");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "contains");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "__tag");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "as_str");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "collect");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__inner_result");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&inner_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "if");
::quote::__private::push_ident(&mut _s, "__present_indices");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "is_empty");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "new");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
::quote::__private::push_ident(&mut _s, "else");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__prefix");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "str");
::quote::__private::push_eq(&mut _s);
::quote::ToTokens::to_tokens(&prefix_lit, &mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__names");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__view");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "names");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__sel");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "str");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__names");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "filter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "__n");
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "__n");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "starts_with");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__prefix");
_s
});
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "__n");
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "__n");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "as_str");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "collect");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "if");
::quote::__private::push_ident(&mut _s, "__sel");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "is_empty");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "return");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"struct column `{}`: no columns with prefix `{}` found\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&base, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__prefix");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__sub_dense");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__view");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "select");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "__sel");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "strip_prefix");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__prefix");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "select_rows");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s,
"__present_indices");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__out");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "match");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&inner_ty, &mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"DataFrameRowConvert");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s,
"rows_from_dataframe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "__sub_dense");
_s
});
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Ok");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__v");
_s
});
_s
});
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_ident(&mut _s, "__v");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__e");
_s
});
_s
});
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "return");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"struct column `{}`: {}\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&base, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__e");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "return");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"struct column `{}`: nested type has no data.frame reader\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&base, &mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "__out");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__result");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&inner_ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "0");
::quote::__private::push_dot2(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_or(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "collect");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__dense_iter");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__inner_result");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into_iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_ident(&mut _s, "in");
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "__present_indices");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__result");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
_s
});
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__dense_iter");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "next");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "expect");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"dense iter must match present count\"");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "__result");
_s
});
::quote::__private::push_semi(&mut _s);
_s
}quote! {
3178 let mut #vec_var: ::std::vec::Vec<::core::option::Option<#inner_ty>> = {
3179 let __contributing: &[&str] = &[#(#contributing_variant_names),*];
3182 let __present_indices: ::std::vec::Vec<usize> = (0..__nrow)
3183 .filter(|&__i| __contributing.contains(&__tag[__i].as_str()))
3184 .collect();
3185
3186 let __inner_result: ::std::vec::Vec<#inner_ty> = if __present_indices.is_empty() {
3187 ::std::vec::Vec::new()
3188 } else {
3189 let __prefix: &str = #prefix_lit;
3192 let __names = __view.names();
3193 let __sel: ::std::vec::Vec<&str> = __names
3194 .iter()
3195 .filter(|__n| __n.starts_with(__prefix))
3196 .map(|__n| __n.as_str())
3197 .collect();
3198 if __sel.is_empty() {
3199 return ::core::result::Result::Err(::std::format!(
3200 "struct column `{}`: no columns with prefix `{}` found",
3201 #base, __prefix
3202 ));
3203 }
3204 let __sub_dense = __view
3212 .select(&__sel)
3213 .strip_prefix(__prefix)
3214 .select_rows(&__present_indices);
3215 let __out = match <#inner_ty as ::miniextendr_api::dataframe::DataFrameRowConvert>::rows_from_dataframe(&__sub_dense) {
3216 ::core::option::Option::Some(::core::result::Result::Ok(__v)) => __v,
3217 ::core::option::Option::Some(::core::result::Result::Err(__e)) => {
3218 return ::core::result::Result::Err(::std::format!(
3219 "struct column `{}`: {}", #base, __e
3220 ));
3221 }
3222 ::core::option::Option::None => {
3223 return ::core::result::Result::Err(::std::format!(
3224 "struct column `{}`: nested type has no data.frame reader", #base
3225 ));
3226 }
3227 };
3228 __out
3229 };
3230
3231 let mut __result: ::std::vec::Vec<::core::option::Option<#inner_ty>> =
3233 (0..__nrow).map(|_| ::core::option::Option::None).collect();
3234 let mut __dense_iter = __inner_result.into_iter();
3235 for &__i in &__present_indices {
3236 __result[__i] = ::core::option::Option::Some(
3237 __dense_iter.next().expect("dense iter must match present count")
3238 );
3239 }
3240 __result
3241 };
3242 });
3243 }
3244 }
3245 }
3246
3247 let emit_map_col_extract = |col_var: &syn::Ident, col_name: &str, elem_ty: &syn::Type| {
3254 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::ToTokens::to_tokens(&col_var, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&elem_ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__col_sexp");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__view");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "column_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&col_name, &mut _s);
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "ok_or_else");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or_or(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"column `{}` is missing from the data.frame\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&col_name, &mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_question(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "if");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SEXP");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SexpExt");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "is_list");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_and(&mut _s);
::quote::__private::push_ident(&mut _s, "__col_sexp");
_s
});
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__list");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "unsafe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "list");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "List");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from_raw");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__col_sexp");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__len");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__list");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__v");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&elem_ty, &mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "with_capacity");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__len");
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_ident(&mut _s, "usize");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "__j");
::quote::__private::push_ident(&mut _s, "in");
::quote::__private::parse(&mut _s, "0");
::quote::__private::push_dot2(&mut _s);
::quote::__private::push_ident(&mut _s, "__len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__elt");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__list");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "get");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__j");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "unwrap");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "if");
::quote::__private::push_ident(&mut _s, "__elt");
::quote::__private::push_eq_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SEXP");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "nil");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__v");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
::quote::__private::push_ident(&mut _s, "else");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__inner");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&elem_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::ToTokens::to_tokens(&elem_ty, &mut _s);
::quote::__private::push_gt(&mut _s);
::quote::__private::push_ident(&mut _s, "as");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from_r");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "TryFromSexp");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "try_from_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__elt");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map_err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "e");
::quote::__private::push_or(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"column `{}` element {} could not be converted to the expected type: {}\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&col_name, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__j");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "e");
_s
});
_s
});
::quote::__private::push_question(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "__v");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Some");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__inner");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "__v");
_s
});
::quote::__private::push_ident(&mut _s, "else");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "0");
::quote::__private::push_dot2(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_or(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Option");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "None");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "collect");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "if");
::quote::ToTokens::to_tokens(&col_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_ne(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "return");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"column `{}` has length {} but data.frame has {} rows\"");
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&col_name, &mut _s);
::quote::__private::push_comma(&mut _s);
::quote::ToTokens::to_tokens(&col_var, &mut _s);
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "len");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
}quote! {
3255 let mut #col_var: ::std::vec::Vec<::core::option::Option<::std::vec::Vec<#elem_ty>>> = {
3256 let __col_sexp = __view.column_raw(#col_name).ok_or_else(|| {
3257 ::std::format!("column `{}` is missing from the data.frame", #col_name)
3258 })?;
3259 if <::miniextendr_api::SEXP as ::miniextendr_api::SexpExt>::is_list(&__col_sexp) {
3262 let __list = unsafe {
3263 ::miniextendr_api::list::List::from_raw(__col_sexp)
3264 };
3265 let __len = __list.len();
3266 let mut __v: ::std::vec::Vec<::core::option::Option<::std::vec::Vec<#elem_ty>>> =
3267 ::std::vec::Vec::with_capacity(__len as usize);
3268 for __j in 0..__len {
3269 let __elt = __list.get(__j).unwrap();
3271 if __elt == ::miniextendr_api::SEXP::nil() {
3272 __v.push(::core::option::Option::None);
3273 } else {
3274 let __inner: ::std::vec::Vec<#elem_ty> =
3275 <::std::vec::Vec<#elem_ty> as ::miniextendr_api::from_r::TryFromSexp>::try_from_sexp(__elt)
3276 .map_err(|e| ::std::format!(
3277 "column `{}` element {} could not be converted to the expected type: {}",
3278 #col_name, __j, e
3279 ))?;
3280 __v.push(::core::option::Option::Some(__inner));
3281 }
3282 }
3283 __v
3284 } else {
3285 (0..__nrow).map(|_| ::core::option::Option::None).collect()
3287 }
3288 };
3289 if #col_var.len() != __nrow {
3290 return ::core::result::Result::Err(::std::format!(
3291 "column `{}` has length {} but data.frame has {} rows",
3292 #col_name, #col_var.len(), __nrow
3293 ));
3294 }
3295 }
3296 };
3297 let mut seen_map: std::collections::HashSet<String> = std::collections::HashSet::new();
3298 for vi in variant_infos {
3299 for erf in &vi.fields {
3300 if let EnumResolvedField::Map(data) = erf
3301 && seen_map.insert(data.base_name.clone())
3302 {
3303 let keys_name = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_keys", data.base_name))
})format!("{}_keys", data.base_name);
3304 let vals_name = ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}_values", data.base_name))
})format!("{}_values", data.base_name);
3305 let keys_var = match ::quote::__private::IdentFragmentAdapter(&data.base_name.replace('-',
"_")) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__mapcol_{0}_keys", arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__mapcol_{}_keys", data.base_name.replace('-', "_"));
3306 let vals_var =
3307 match ::quote::__private::IdentFragmentAdapter(&data.base_name.replace('-',
"_")) {
arg =>
::quote::__private::mk_ident(&::alloc::__export::must_use({
::alloc::fmt::format(format_args!("__mapcol_{0}_values",
arg))
}), ::quote::__private::Option::None.or(arg.span())),
}format_ident!("__mapcol_{}_values", data.base_name.replace('-', "_"));
3308 extracts.push(emit_map_col_extract(&keys_var, &keys_name, &data.key_ty));
3309 extracts.push(emit_map_col_extract(&vals_var, &vals_name, &data.val_ty));
3310 }
3311 }
3312 }
3313 let mut match_arms: Vec<TokenStream> = Vec::new();
3317 let mut par_match_arms: Vec<TokenStream> = Vec::new();
3319
3320 for vi in variant_infos {
3321 let variant_name_str = vi.name.to_string();
3322 let variant_ident = &vi.name;
3323
3324 let arm_body = |take: bool| -> TokenStream {
3325 let values = vi
3326 .fields
3327 .iter()
3328 .map(|erf| enum_reader_field_value(erf, &variant_name_str, take));
3329 match vi.shape {
3330 VariantShape::Named => {
3331 let names = vi.fields.iter().map(|erf| erf.rust_name());
3332 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_ident, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut names, i) = names.quote_into_iter();
let has_iter = has_iter | i;
#[allow(unused_mut)]
let (mut values, i) = values.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let names =
match names.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
let values =
match values.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&names, &mut _s);
::quote::__private::push_colon(&mut _s);
::quote::ToTokens::to_tokens(&values, &mut _s);
}
}
_s
});
_s
}quote! { #row_name::#variant_ident { #(#names: #values),* } }
3333 }
3334 VariantShape::Tuple => {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_ident, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let mut _first = true;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut values, i) = values.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let values =
match values.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
if !_first { ::quote::__private::push_comma(&mut _s); }
_first = false;
::quote::ToTokens::to_tokens(&values, &mut _s);
}
}
_s
});
_s
}quote! { #row_name::#variant_ident( #(#values),* ) },
3335 VariantShape::Unit => {
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&row_name, &mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::ToTokens::to_tokens(&variant_ident, &mut _s);
_s
}quote! { #row_name::#variant_ident },
3336 }
3337 };
3338
3339 let seq_body = arm_body(true);
3341 match_arms.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&variant_name_str, &mut _s);
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__rows");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "push");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&seq_body, &mut _s);
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
}quote! {
3342 #variant_name_str => {
3343 __rows.push(#seq_body);
3344 }
3345 });
3346 let par_body = arm_body(false);
3348 par_match_arms.push({
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&variant_name_str, &mut _s);
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Ok");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&par_body, &mut _s);
_s
});
::quote::__private::push_comma(&mut _s);
_s
}quote! {
3349 #variant_name_str => ::core::result::Result::Ok(#par_body),
3350 });
3351 }
3352 let seq_body = {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__view");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrame");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "sexp");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map_err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "e");
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "e");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
::quote::__private::push_question(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__nrow");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__view");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "nrow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut extracts, i) = extracts.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let extracts =
match extracts.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&extracts, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "mut");
::quote::__private::push_ident(&mut _s, "__rows");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "with_capacity");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__nrow");
_s
});
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "for");
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_ident(&mut _s, "in");
::quote::__private::parse(&mut _s, "0");
::quote::__private::push_dot2(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "match");
::quote::ToTokens::to_tokens(&tag_var, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "as_str");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut match_arms, i) = match_arms.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let match_arms =
match match_arms.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&match_arms, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "__unknown");
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "return");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"unknown variant tag {:?} at row {}\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__unknown");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__i");
_s
});
_s
});
::quote::__private::push_semi(&mut _s);
_s
});
_s
});
_s
});
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Ok");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__rows");
_s
});
_s
}quote! {
3356 let __view = ::miniextendr_api::dataframe::DataFrame::from_sexp(sexp)
3357 .map_err(|e| e.to_string())?;
3358 let __nrow = __view.nrow();
3359 #(#extracts)*
3360 let mut __rows: ::std::vec::Vec<Self> = ::std::vec::Vec::with_capacity(__nrow);
3361 for __i in 0..__nrow {
3362 match #tag_var[__i].as_str() {
3363 #(#match_arms)*
3364 __unknown => {
3365 return ::core::result::Result::Err(::std::format!(
3366 "unknown variant tag {:?} at row {}",
3367 __unknown, __i
3368 ));
3369 }
3370 }
3371 }
3372 ::core::result::Result::Ok(__rows)
3373 };
3374 let par_body = if par_delegates {
3381 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "try_from_dataframe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "sexp");
_s
});
_s
}quote! { Self::try_from_dataframe(sexp) }
3382 } else {
3383 {
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "use");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "rayon_bridge");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "rayon");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "prelude");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_star(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "optionals");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "parallel");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "ensure_pool");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__view");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "dataframe");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "DataFrame");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "from_sexp");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "sexp");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map_err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "e");
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "e");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "to_string");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
_s
});
::quote::__private::push_question(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__nrow");
::quote::__private::push_eq(&mut _s);
::quote::__private::push_ident(&mut _s, "__view");
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "nrow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_semi(&mut _s);
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut extracts, i) = extracts.quote_into_iter();
let has_iter = has_iter | i;
<_ as ::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let extracts =
match extracts.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&extracts, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "let");
::quote::__private::push_ident(&mut _s, "__rows");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_eq(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s, "0");
::quote::__private::push_dot2(&mut _s);
::quote::__private::push_ident(&mut _s, "__nrow");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "into_par_iter");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "map");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_or(&mut _s);
::quote::__private::push_ident(&mut _s, "__i");
::quote::__private::push_or(&mut _s);
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "String");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "match");
::quote::ToTokens::to_tokens(&tag_var, &mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__i");
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "as_str");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
{
use ::quote::__private::ext::*;
let has_iter = ::quote::__private::HasIterator::<false>;
#[allow(unused_mut)]
let (mut par_match_arms, i) =
par_match_arms.quote_into_iter();
let has_iter = has_iter | i;
<_ as
::quote::__private::CheckHasIterator<true>>::check(has_iter);
while true {
let par_match_arms =
match par_match_arms.next() {
Some(_x) => ::quote::__private::RepInterp(_x),
None => break,
};
::quote::ToTokens::to_tokens(&par_match_arms, &mut _s);
}
}
::quote::__private::push_ident(&mut _s, "__unknown");
::quote::__private::push_fat_arrow(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Err");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "format");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::parse(&mut _s,
"\"unknown variant tag {:?} at row {}\"");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__unknown");
::quote::__private::push_comma(&mut _s);
::quote::__private::push_ident(&mut _s, "__i");
_s
});
_s
});
_s
});
_s
});
_s
});
_s
});
::quote::__private::push_dot(&mut _s);
::quote::__private::push_ident(&mut _s, "collect");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_underscore(&mut _s);
::quote::__private::push_shr(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
::quote::__private::TokenStream::new());
::quote::__private::push_question(&mut _s);
::quote::__private::push_semi(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Ok");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "__rows");
_s
});
_s
}quote! {
3385 use ::miniextendr_api::rayon_bridge::rayon::prelude::*;
3386 ::miniextendr_api::optionals::parallel::ensure_pool();
3387 let __view = ::miniextendr_api::dataframe::DataFrame::from_sexp(sexp)
3388 .map_err(|e| e.to_string())?;
3389 let __nrow = __view.nrow();
3390 #(#extracts)*
3391 let __rows: ::std::vec::Vec<Self> = (0..__nrow)
3392 .into_par_iter()
3393 .map(|__i| -> ::core::result::Result<Self, ::std::string::String> {
3394 match #tag_var[__i].as_str() {
3395 #(#par_match_arms)*
3396 __unknown => {
3397 ::core::result::Result::Err(::std::format!(
3398 "unknown variant tag {:?} at row {}",
3399 __unknown, __i
3400 ))
3401 }
3402 }
3403 })
3404 .collect::<::core::result::Result<::std::vec::Vec<Self>, _>>()?;
3405 ::core::result::Result::Ok(__rows)
3406 }
3407 };
3408 Some({
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" Read an R `data.frame` directly into a `Vec<Self>` (sequential).\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "r\"\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" Reads the tag column first, then per-row dispatches to the active variant\'s\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" field assemblers. Each schema column is pre-extracted (NA-aware, ALTREP-\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" materialising). Returns `Err` with a descriptive message if a column is\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" missing, mis-typed, or if an unknown tag value is encountered.\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "r\"\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" This is the one-call `SEXP \u{2192} Vec<Self>` reader; the same conversion is also\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" reachable via the boundary-crossing [`FromDataFrame`] trait as\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" `Vec::<Self>::from_dataframe(&df)`.\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "r\"\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" [`FromDataFrame`]: ::miniextendr_api::dataframe::FromDataFrame\"");
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "try_from_dataframe");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "sexp");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SEXP");
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "String");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&seq_body, &mut _s);
_s
});
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "__dataframe_row_when_rayon");
::quote::__private::push_bang(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" Read an R `data.frame` directly into a `Vec<Self>` (parallel).\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "r\"\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" Mirrors [`Self::try_from_dataframe`] but assembles rows off the R thread via\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" rayon. All SEXP access happens up front on the R/worker thread; the\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" `into_par_iter()` region touches only pre-extracted owned data. Shapes with\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s,
"r\" struct-flatten/nested-enum or factor fields delegate to the sequential\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "doc");
::quote::__private::push_eq(&mut _s);
::quote::__private::parse(&mut _s, "r\" reader instead.\"");
_s
});
::quote::__private::push_pound(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Bracket,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "allow");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "unused_mut");
_s
});
_s
});
::quote::__private::push_ident(&mut _s, "pub");
::quote::__private::push_ident(&mut _s, "fn");
::quote::__private::push_ident(&mut _s, "try_from_dataframe_par");
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Parenthesis,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::__private::push_ident(&mut _s, "sexp");
::quote::__private::push_colon(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "miniextendr_api");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "SEXP");
::quote::__private::push_comma(&mut _s);
_s
});
::quote::__private::push_rarrow(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "core");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "result");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Result");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "vec");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "Vec");
::quote::__private::push_lt(&mut _s);
::quote::__private::push_ident(&mut _s, "Self");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_comma(&mut _s);
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "std");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "string");
::quote::__private::push_colon2(&mut _s);
::quote::__private::push_ident(&mut _s, "String");
::quote::__private::push_gt(&mut _s);
::quote::__private::push_group(&mut _s,
::quote::__private::Delimiter::Brace,
{
let mut _s = ::quote::__private::TokenStream::new();
::quote::ToTokens::to_tokens(&par_body, &mut _s);
_s
});
_s
});
_s
}quote! {
3411 pub fn try_from_dataframe(
3424 sexp: ::miniextendr_api::SEXP,
3425 ) -> ::core::result::Result<::std::vec::Vec<Self>, ::std::string::String> {
3426 #seq_body
3427 }
3428
3429 ::miniextendr_api::__dataframe_row_when_rayon! {
3431 #[allow(unused_mut)]
3441 pub fn try_from_dataframe_par(
3442 sexp: ::miniextendr_api::SEXP,
3443 ) -> ::core::result::Result<::std::vec::Vec<Self>, ::std::string::String> {
3444 #par_body
3445 }
3446 }
3447 })
3448}
3449