diff options
Diffstat (limited to '')
-rw-r--r-- | src/test/ui/issues/issue-16668.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/test/ui/issues/issue-16668.rs b/src/test/ui/issues/issue-16668.rs new file mode 100644 index 000000000..92efb42fe --- /dev/null +++ b/src/test/ui/issues/issue-16668.rs @@ -0,0 +1,20 @@ +// check-pass +#![allow(dead_code)] +struct Parser<'a, I, O> { + parse: Box<dyn FnMut(I) -> Result<O, String> + 'a> +} + +impl<'a, I: 'a, O: 'a> Parser<'a, I, O> { + fn compose<K: 'a>(mut self, mut rhs: Parser<'a, O, K>) -> Parser<'a, I, K> { + Parser { + parse: Box::new(move |x: I| { + match (self.parse)(x) { + Ok(r) => (rhs.parse)(r), + Err(e) => Err(e) + } + }) + } + } +} + +fn main() {} |