darklua_core/nodes/types/
variadic_type_pack.rs1use crate::nodes::Token;
2
3use super::Type;
4
5#[derive(Clone, Debug, PartialEq, Eq)]
10pub struct VariadicTypePack {
11 inner_type: Box<Type>,
13 token: Option<Token>,
14}
15
16impl VariadicTypePack {
17 pub fn new(r#type: impl Into<Type>) -> Self {
19 Self {
20 inner_type: Box::new(r#type.into()),
21 token: None,
22 }
23 }
24
25 #[inline]
27 pub fn get_type(&self) -> &Type {
28 &self.inner_type
29 }
30
31 #[inline]
33 pub fn mutate_type(&mut self) -> &mut Type {
34 &mut self.inner_type
35 }
36
37 pub fn with_token(mut self, token: Token) -> Self {
39 self.token = Some(token);
40 self
41 }
42
43 #[inline]
45 pub fn set_token(&mut self, token: Token) {
46 self.token = Some(token);
47 }
48
49 #[inline]
51 pub fn get_token(&self) -> Option<&Token> {
52 self.token.as_ref()
53 }
54
55 #[inline]
57 pub fn mutate_token(&mut self) -> Option<&mut Token> {
58 self.token.as_mut()
59 }
60
61 pub fn mutate_last_token(&mut self) -> &mut Token {
62 self.inner_type.mutate_last_token()
63 }
64
65 super::impl_token_fns!(iter = [token]);
66}