diff --git a/tvix/nix-compat/src/derivation/parser.rs b/tvix/nix-compat/src/derivation/parser.rs index b15769c2c..64037ce15 100644 --- a/tvix/nix-compat/src/derivation/parser.rs +++ b/tvix/nix-compat/src/derivation/parser.rs @@ -27,6 +27,20 @@ pub enum Error { Validation(super::DerivationError), } +/// Convenience conversion of borring Error to an owned counterpart. +impl From> for Error> { + fn from(value: Error<&[u8]>) -> Self { + match value { + Error::Parser(nom_error) => Error::Parser(NomError { + input: nom_error.input.to_vec(), + code: nom_error.code, + }), + Error::Incomplete => Error::Incomplete, + Error::Validation(e) => Error::Validation(e), + } + } +} + pub(crate) fn parse(i: &[u8]) -> Result> { match all_consuming(parse_derivation).parse(i) { Ok((rest, derivation)) => {