1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use std::iter;

pub trait Shard:
	Clone + AsRef<[u8]> + AsMut<[u8]> + AsMut<[[u8; 2]]> + AsRef<[[u8; 2]]> + iter::FromIterator<[u8; 2]> + From<Vec<u8>>
{
	type Inner;
	fn into_inner(self) -> Self::Inner;
}

impl<T> Shard for T
where
	T: Clone
		+ AsRef<[u8]>
		+ AsMut<[u8]>
		+ AsMut<[[u8; 2]]>
		+ AsRef<[[u8; 2]]>
		+ iter::FromIterator<[u8; 2]>
		+ From<Vec<u8>>,
{
	type Inner = Self;
	fn into_inner(self) -> Self::Inner {
		self
	}
}