| 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() {} |