mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-05 13:13:40 +00:00
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() {}
|