1use rudy_types::VecLayout;
4
5use crate::Die;
6
7use super::{
8 children::parse_children,
9 primitives::{field_path_offset, is_member_offset, resolved_generic},
10 Parser,
11};
12
13pub fn vec() -> impl Parser<VecLayout<Die>> {
15 parse_children((
16 field_path_offset(vec!["buf", "inner", "ptr"]),
17 is_member_offset("len"),
18 field_path_offset(vec!["buf", "inner", "cap", "__0"]),
19 resolved_generic("T"),
20 ))
21 .map(
22 |(data_ptr_offset, length_offset, capacity_offset, inner_type)| VecLayout {
23 data_ptr_offset,
24 length_offset,
25 capacity_offset,
26 inner_type,
27 },
28 )
29 .context("Failed to parse Vec layout")
30}