创建错误以匹配 nom 6.2.1 中的 nom::IResult

creating an error to match nom::IResult in nom 6.2.1

在 nom 5.0 中编译正常:

fn escaped_space(i: &str) -> nom::IResult<&str, &str> {
    nom::combinator::value(" ", nom::bytes::complete::tag("040"))(i)
}
assert_eq!(escaped_space(" "), Err(nom::Err::Error((" ", nom::error::ErrorKind::Tag))));

但在当前版本 6.2.1 中,断言行未编译并出现类型不匹配错误 [E0308]:

expected Result<(&str, &str), nom::Err<nom::error::Error<&str>>> 

found Result<_, nom::Err<(&str, nom::error::ErrorKind)>>

如何创建错误以使其与最上面的错误匹配?

在 nom 6 中,有一个包含错误详细信息的 additional struct,而不是 nom 5 中的元组:

Err( 
    nom::Err::Error(
        nom::error::Error::new( //the new struct, instead of the tuple
            " ",
            nom::error::ErrorKind::Tag
        )
    )
)