提交 1cde7e6b 编写于 作者: B bors

auto merge of #5294 : apasel422/rust/clone, r=nikomatsakis

This makes `#[deriving_clone]` useful.

I wasn't sure if a macro was the right way to do this, but it seems more maintainable than a series of repetitive `impl`s.
......@@ -19,3 +19,31 @@ impl Clone for () {
#[inline(always)]
fn clone(&self) -> () { () }
}
macro_rules! clone_impl(
($t:ty) => {
impl Clone for $t {
#[inline(always)]
fn clone(&self) -> $t { *self }
}
}
)
clone_impl!(int)
clone_impl!(i8)
clone_impl!(i16)
clone_impl!(i32)
clone_impl!(i64)
clone_impl!(uint)
clone_impl!(u8)
clone_impl!(u16)
clone_impl!(u32)
clone_impl!(u64)
clone_impl!(float)
clone_impl!(f32)
clone_impl!(f64)
clone_impl!(bool)
clone_impl!(char)
#[deriving_clone]
struct S {
foo: (),
bar: ()
_int: int,
_i8: i8,
_i16: i16,
_i32: i32,
_i64: i64,
_uint: uint,
_u8: u8,
_u16: u16,
_u32: u32,
_u64: u64,
_float: float,
_f32: f32,
_f64: f64,
_bool: bool,
_char: char,
_nil: ()
}
fn main() {}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册