feat(tvix/eval): implement builtins.toJSON
Implements `Serialize` for `tvix_eval::Value`. Special care is taken with serialisation of attribute sets, and forcing of thunks. The tests should cover both cases well. Change-Id: I9bb135bacf6f87bc6bd0bd88cef0a42308e6c335 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7803 Reviewed-by: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Autosubmit: tazjin <tazjin@tvl.su>
This commit is contained in:
		
							parent
							
								
									fc7e52b4ac
								
							
						
					
					
						commit
						02d35e4aa6
					
				
					 11 changed files with 75 additions and 10 deletions
				
			
		|  | @ -9,16 +9,17 @@ use std::path::Path; | |||
| use std::{borrow::Cow, fmt::Display, str::Chars}; | ||||
| 
 | ||||
| use serde::de::{Deserializer, Visitor}; | ||||
| use serde::Deserialize; | ||||
| use serde::{Deserialize, Serialize}; | ||||
| 
 | ||||
| #[derive(Clone, Debug)] | ||||
| #[derive(Clone, Debug, Serialize)] | ||||
| #[serde(untagged)] | ||||
| enum StringRepr { | ||||
|     Smol(SmolStr), | ||||
|     Heap(String), | ||||
| } | ||||
| 
 | ||||
| #[repr(transparent)] | ||||
| #[derive(Clone, Debug)] | ||||
| #[derive(Clone, Debug, Serialize)] | ||||
| pub struct NixString(StringRepr); | ||||
| 
 | ||||
| impl PartialEq for NixString { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue