1 // Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
11 use hir::BindingAnnotation::*;
12 use hir::BindingAnnotation;
15 #[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)]
16 pub enum BindingMode {
17 BindByReference(Mutability),
18 BindByValue(Mutability),
22 pub fn convert(ba: BindingAnnotation) -> BindingMode {
24 Unannotated => BindingMode::BindByValue(Mutability::MutImmutable),
25 Mutable => BindingMode::BindByValue(Mutability::MutMutable),
26 Ref => BindingMode::BindByReference(Mutability::MutImmutable),
27 RefMut => BindingMode::BindByReference(Mutability::MutMutable),
32 impl_stable_hash_for!(enum self::BindingMode {
33 BindByReference(mutability),
34 BindByValue(mutability)