sway_core/language/ty/
variable_mutability.rs

1use crate::language::Visibility;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
5pub enum VariableMutability {
6    // mutable
7    Mutable,
8    // referenceable + mutable
9    RefMutable,
10    // immutable
11    #[default]
12    Immutable,
13}
14
15impl VariableMutability {
16    pub fn new_from_ref_mut(is_reference: bool, is_mutable: bool) -> VariableMutability {
17        if is_reference {
18            VariableMutability::RefMutable
19        } else if is_mutable {
20            VariableMutability::Mutable
21        } else {
22            VariableMutability::Immutable
23        }
24    }
25
26    pub fn is_mutable(&self) -> bool {
27        matches!(
28            self,
29            VariableMutability::Mutable | VariableMutability::RefMutable
30        )
31    }
32
33    pub fn visibility(&self) -> Visibility {
34        Visibility::Private
35    }
36
37    pub fn is_immutable(&self) -> bool {
38        !self.is_mutable()
39    }
40}