29 lines
644 B
Rust
29 lines
644 B
Rust
use std::marker::PhantomData;
|
|
|
|
pub struct NfaBuilder<'brand> {
|
|
brand: PhantomData<&'brand mut &'brand mut ()>,
|
|
}
|
|
|
|
impl NfaBuilder<'_> {
|
|
pub fn with<R, F: FnOnce(NfaBuilder<'_>) -> R>(f: F) -> R {
|
|
Brand::with(|brand| {
|
|
f(Self { brand: brand.lt })
|
|
//~^ ERROR lifetime may not live long enough
|
|
//~| ERROR lifetime may not live long enough
|
|
})
|
|
}
|
|
}
|
|
|
|
#[derive(Clone, Copy)]
|
|
pub struct Brand<'brand> {
|
|
lt: PhantomData<&'brand mut &'brand mut ()>,
|
|
}
|
|
|
|
impl Brand<'_> {
|
|
pub fn with<R, F: FnOnce(Brand<'_>) -> R>(f: F) -> R {
|
|
f(Self { lt: PhantomData })
|
|
}
|
|
}
|
|
|
|
fn main() {}
|