diff options
Diffstat (limited to 'tvix/serde')
-rw-r--r-- | tvix/serde/examples/nixpkgs.rs | 4 | ||||
-rw-r--r-- | tvix/serde/src/de.rs | 14 | ||||
-rw-r--r-- | tvix/serde/src/de_tests.rs | 4 |
3 files changed, 10 insertions, 12 deletions
diff --git a/tvix/serde/examples/nixpkgs.rs b/tvix/serde/examples/nixpkgs.rs index ad8c4160b5d0..e3c589dba118 100644 --- a/tvix/serde/examples/nixpkgs.rs +++ b/tvix/serde/examples/nixpkgs.rs @@ -23,8 +23,8 @@ fn main() { } "#; - let result = tvix_serde::from_str_with_config::<Config, _>(code, |eval| { - eval.enable_impure(None); + let result = tvix_serde::from_str_with_config::<Config, _>(code, |eval_builder| { + eval_builder.enable_impure(None) }); match result { diff --git a/tvix/serde/src/de.rs b/tvix/serde/src/de.rs index 428b9e2e8114..88cb46d618ce 100644 --- a/tvix/serde/src/de.rs +++ b/tvix/serde/src/de.rs @@ -3,8 +3,7 @@ use bstr::ByteSlice; use serde::de::value::{MapDeserializer, SeqDeserializer}; use serde::de::{self, EnumAccess, VariantAccess}; -pub use tvix_eval::Evaluation; -use tvix_eval::{EvalIO, Value}; +use tvix_eval::{EvalIO, EvaluationBuilder, Value}; use crate::error::Error; @@ -36,7 +35,7 @@ pub fn from_str<'code, T>(src: &'code str) -> Result<T, Error> where T: serde::Deserialize<'code>, { - from_str_with_config(src, |_| /* no extra config */ ()) + from_str_with_config(src, |b| /* no extra config */ b) } /// Evaluate the Nix code in `src`, with extra configuration for the @@ -44,13 +43,12 @@ where pub fn from_str_with_config<'code, T, F>(src: &'code str, config: F) -> Result<T, Error> where T: serde::Deserialize<'code>, - F: FnOnce(&mut Evaluation<Box<dyn EvalIO>>), + F: for<'co, 'ro, 'env> FnOnce( + EvaluationBuilder<'co, 'ro, 'env, Box<dyn EvalIO>>, + ) -> EvaluationBuilder<'co, 'ro, 'env, Box<dyn EvalIO>>, { // First step is to evaluate the Nix code ... - let mut eval = Evaluation::new_pure(); - config(&mut eval); - - eval.strict = true; + let eval = config(EvaluationBuilder::new_pure().strict()).build(); let result = eval.evaluate(src, None); if !result.errors.is_empty() { diff --git a/tvix/serde/src/de_tests.rs b/tvix/serde/src/de_tests.rs index 1c3acd1c2f52..fea7c8290bd7 100644 --- a/tvix/serde/src/de_tests.rs +++ b/tvix/serde/src/de_tests.rs @@ -204,7 +204,7 @@ fn deserialize_enum_all() { fn deserialize_with_config() { let result: String = from_str_with_config("builtins.testWithConfig", |eval| { // Add a literal string builtin that just returns `"ok"`. - eval.src_builtins.push(("testWithConfig", "\"ok\"")); + eval.add_src_builtin("testWithConfig", "\"ok\"") }) .expect("should deserialize"); @@ -237,7 +237,7 @@ fn deserialize_with_extra_builtin() { let code = "builtins.prependHello \"world\""; let result: String = from_str_with_config(code, |eval| { - eval.builtins.append(&mut test_builtins::builtins()); + eval.add_builtins(test_builtins::builtins()) }) .expect("should deserialize"); |