S;
impl S {
fn parse(input: &str) -> anyhow::Result<Self> {
let (rest, value) = Self::parse_inner(input)?;
Ok(value)
}
fn parse_inner(input: &str) -> IResult<&str, Self> {
todo!()
}
}
fn main() {}
в функции обертке попытка ошибку в anyhow::Error превратить через ? создает какуюто всратую ошибку лайфтаймов
error[E0759]: `input` has an anonymous lifetime `'_` but it needs to satisfy a `'static` lifetime requirement
--> src/main.rs:8:29
|
7 | fn parse(input: &str) -> anyhow::Result<Self> {
| ---- this data with an anonymous lifetime `'_`...
8 | let (rest, value) = Self::parse_inner(input)?;
| ^^^^^^^^^^^^^^^^^^-----^- ...and is required to live as long as `'static` here
| |
| ...is captured here...
Тут от ном-а разве что IResult используется. Предположу, что нужно Self::parse_inner(input)?; поменять на Self::parse_inner(&input)?;, чтобы ссылка осталась в текущем скопе. Но это не точно.
use nom::IResult; struct S; impl S { fn parse(input: &str) -> anyhow::Result<Self> { let (rest, value) = Self::parse_inner(input).map_err(|e| e.map(|e| e.to_string()))?; Ok(value) } fn parse_inner(input: &str) -> IResult<&str, Self> { todo!() } } fn main() {}
спс оказвается номовская ошибка умеет to_string делать так что ваще нормально
Обсуждают сегодня