import re from lark import Token # https://stackoverflow.com/a/1176023/6938271 MIXED_2_SNAKE_CASE = re.compile(r'(? tuple: # rusty_name: str, inner: str, deserializer: Optional[int] if isinstance(raw_type, Token): if type_is_scalar(raw_type): scalar, deserialize = convert_scalar_name(raw_type) if deserialize: return scalar, scalar, 0 else: return scalar, scalar, None else: rusty_type = to_camel_case(raw_type) if rusty_type in BOXED_TYPES: return f'Box<{rusty_type}>', rusty_type, None return rusty_type, rusty_type, None else: inner_full, inner_inner, deserializer = parse_param(raw_type.children[0]) if deserializer is not None: deserializer += 1 return f'Vec<{inner_full}>', inner_inner, deserializer