// Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. use std::either::{Either, Left, Right}; fn f(x: &mut Either, y: &Either) -> int { match *y { Left(ref z) => { *x = Right(1.0); *z } _ => fail!() } } fn g() { let mut x: Either = Left(3); println(f(&mut x, &x).to_str()); //~ ERROR cannot borrow } fn h() { let mut x: Either = Left(3); let y: &Either = &x; let z: &mut Either = &mut x; //~ ERROR cannot borrow *z = *y; } fn main() {}