//@ check-pass | |
#![feature(dyn_star)] | |
#![allow(incomplete_features)] | |
trait AddOne { | |
fn add1(&mut self) -> usize; | |
} | |
impl AddOne for usize { | |
fn add1(&mut self) -> usize { | |
*self += 1; | |
*self | |
} | |
} | |
impl AddOne for &mut usize { | |
fn add1(&mut self) -> usize { | |
(*self).add1() | |
} | |
} | |
fn add_one(mut i: dyn* AddOne + '_) -> usize { | |
i.add1() | |
} | |
fn main() { | |
let mut x = 42usize; | |
let y = &mut x as (dyn* AddOne + '_); | |
println!("{}", add_one(y)); | |
} |