     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15

    use crate::parse::{ParseBuffer, ParseStream};
    use proc_macro2::TokenStream;
    use std::iter;

    pub fn between<'a>(begin: ParseBuffer<'a>, end: ParseStream<'a>) -> TokenStream {
        let end = end.cursor();
        let mut cursor = begin.cursor();
        let mut tokens = TokenStream::new();
        while cursor != end {
            let (tt, next) = cursor.token_tree().unwrap();
            tokens.extend(iter::once(tt));
            cursor = next;
        }
        tokens
    }