40 lines
587 B
Rust
40 lines
587 B
Rust
// check-pass
|
|
|
|
#![allow(incomplete_features)]
|
|
#![feature(generic_const_exprs)]
|
|
|
|
use std::marker::PhantomData;
|
|
|
|
pub trait Bytes {
|
|
const BYTES: usize;
|
|
}
|
|
|
|
#[derive(Clone, Debug)]
|
|
pub struct Conster<OT>
|
|
where
|
|
OT: Bytes,
|
|
[(); OT::BYTES]: Sized,
|
|
{
|
|
_offset_type: PhantomData<fn(OT) -> OT>,
|
|
}
|
|
|
|
impl<OT> Conster<OT>
|
|
where
|
|
OT: Bytes,
|
|
[(); OT::BYTES]: Sized,
|
|
{
|
|
pub fn new() -> Self {
|
|
Conster { _offset_type: PhantomData }
|
|
}
|
|
}
|
|
|
|
pub fn make_conster<COT>() -> Conster<COT>
|
|
where
|
|
COT: Bytes,
|
|
[(); COT::BYTES]: Sized,
|
|
{
|
|
Conster::new()
|
|
}
|
|
|
|
fn main() {}
|