#[derive(UnsizedCopy)]
Expand description
Deriving UnsizedCopy
automatically.
UnsizedCopy
can be derived on any aggregate type. enum
s and
union
s are inherently Sized
types, and UnsizedCopy
will simply
require every field to implement Copy
on them. For struct
s, all but
the last field need to implement Copy
; the last field needs to
implement UnsizedCopy
.
Here’s a simple example:
struct Foo<T: ?Sized> {
a: u32,
b: Bar<T>,
}
// The generated impl with 'derive(UnsizedCopy)':
unsafe impl<T: ?Sized> UnsizedCopy for Foo<T>
where
u32: Copy,
Bar<T>: UnsizedCopy,
{
// This type has the same alignment as 'Foo<T>'.
type Alignment = (u32, <Bar<T> as UnsizedCopy>::Alignment);
fn ptr_with_addr(&self, addr: *const ()) -> *const Self {
self.b.ptr_with_addr(addr) as *const Self
}
}