sway_core/language/ty/
variable_mutability.rs1use crate::language::Visibility;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
5pub enum VariableMutability {
6 Mutable,
8 RefMutable,
10 #[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}