ct_regex_internal/codegen/convert_hir/
groups.rs1use std::collections::HashMap;
2
3#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Group {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Group", "name",
&self.name, "required", &&self.required)
}
}Debug)]
4pub struct Group {
5 pub name: Option<Box<str>>,
6 pub required: bool,
7}
8
9#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Groups {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "Groups", "map",
&self.map, "required", &&self.required)
}
}Debug, #[automatically_derived]
impl ::core::default::Default for Groups {
#[inline]
fn default() -> Groups {
Groups {
map: ::core::default::Default::default(),
required: ::core::default::Default::default(),
}
}
}Default)]
10pub struct Groups {
11 pub map: HashMap<u32, Group>,
12 pub required: bool,
13}
14
15impl Groups {
16 pub fn new() -> Groups {
17 let mut map = HashMap::new();
18 map.insert(0, Group {
19 name: Some("whole_match".into()),
20 required: true,
21 });
22 Groups {
23 map,
24 required: true
25 }
26 }
27
28 pub fn insert(&mut self, index: u32, name: Option<Box<str>>) {
29 self.map.insert(index, Group {
30 name,
31 required: self.required,
32 });
33 }
34
35 pub fn into_vec(self) -> Vec<Group> {
36 let mut items: Vec<_> = self.map.into_iter().collect();
37 items.sort_by_key(|(i, _)| *i);
38
39 if items.iter().enumerate().any(|(num, (index, _))| num != *index as usize) {
40 { ::core::panicking::panic_fmt(format_args!("missing a capture group")); };panic!("missing a capture group");
41 }
42
43 items.into_iter().map(|(_, item)| item).collect()
44 }
45}