From 0002a5163f6b9d3c756fff9310f22a70128769a4 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Sun, 2 Mar 2025 14:52:23 +0700 Subject: [PATCH] feat(tvix/nix-compat): add conversion for ParseError to owned version This error type is a bit less annoying to use in other errors, as it doesn't hang onto bytes from the input. Change-Id: I4b969717d443f5e04dd2086baeb946a98c4f9d7c Reviewed-on: https://cl.tvl.fyi/c/depot/+/13206 Reviewed-by: Brian Olsen Tested-by: BuildkiteCI --- tvix/nix-compat/src/derivation/parser.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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)) => {