]> git.lizzy.rs Git - rust.git/blob - src/librustc/ty/binding.rs
Auto merge of #61300 - indygreg:upgrade-cross-make, r=sanxiyn
[rust.git] / src / librustc / ty / binding.rs
1 use crate::hir::BindingAnnotation::*;
2 use crate::hir::BindingAnnotation;
3 use crate::hir::Mutability;
4
5 #[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)]
6 pub enum BindingMode {
7     BindByReference(Mutability),
8     BindByValue(Mutability),
9 }
10
11 CloneTypeFoldableAndLiftImpls! { BindingMode, }
12
13 impl BindingMode {
14     pub fn convert(ba: BindingAnnotation) -> BindingMode {
15         match ba {
16             Unannotated => BindingMode::BindByValue(Mutability::MutImmutable),
17             Mutable => BindingMode::BindByValue(Mutability::MutMutable),
18             Ref => BindingMode::BindByReference(Mutability::MutImmutable),
19             RefMut => BindingMode::BindByReference(Mutability::MutMutable),
20         }
21     }
22 }
23
24 impl_stable_hash_for!(enum self::BindingMode {
25     BindByReference(mutability),
26     BindByValue(mutability)
27 });