Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn main() {
- let test = test::<U8, U16>(b"12");
- }
- fn test<T: Test, C: Test>(array: &[u8]) -> Testee<T, C> {
- let sized = T::sized();
- let sized2 = C::sized();
- println!("sized {}, {}", sized, sized2);
- Testee::new::<T, C>()
- }
- pub enum U8 {}
- pub enum U16 {}
- pub trait Test {
- fn sized() -> usize;
- }
- impl Test for U8 {
- fn sized() -> usize {
- 8
- }
- }
- impl Test for U16 {
- fn sized() -> usize {
- 16
- }
- }
- use std::marker::PhantomData;
- #[derive(Debug)]
- pub struct Testee<'a, T: Test + 'a, C: Test + 'a> {
- array: &'a [u8],
- name: PhantomData<T>,
- value: PhantomData<C>,
- }
- impl<'a, T: Test, C: Test> Testee<'a, T, C> {
- pub fn new<T0: Test, C0: Test>() -> Testee<'a, T, C> {
- Testee {
- array: b"",
- name: PhantomData,
- value: PhantomData,
- }
- }
- }
Add Comment
Please, Sign In to add comment