//@ check-pass | |
#![feature(const_trait_impl)] | |
#![feature(const_precise_live_drops, const_destruct)] | |
use std::marker::Destruct; | |
const fn foo<T, E>(res: Result<T, E>) -> Option<T> where E: [const] Destruct { | |
match res { | |
Ok(t) => Some(t), | |
Err(_e) => None, | |
} | |
} | |
pub struct Foo<T>(T); | |
const fn baz<T, E>(res: Result<Foo<T>, Foo<E>>) -> Option<Foo<T>> | |
where | |
T: [const] Destruct, | |
E: [const] Destruct, | |
{ | |
foo(res) | |
} | |
fn main() {} |