Borrow checker issues: mixing inputs and locally owned data

See It seems reasonable to me that expand() can return Target. inter can be dropped before the end of expand(), and before out_len or parts. The compiler seems to disagree, however. Any clues who's right? And if I'm right, how do I explain my point of view to the compiler?

the problem is the 'a in T: From<Intermediate<'a>> + 'static,
what you really wanted is for<'b> T: From<Intermediate<'b>> + 'static,

edit: maybe it does not need to be generic in which case fn expand<'a, T>(src: &'a Source, label: &'a [u8], len: usize) -> Target{ also works


It did actually need to be generic, but the for <'b> seems to have solved my problem. Thanks!