Rename UserVal::set to new to be clearer (#3913)
This commit is contained in:
		@ -319,7 +319,7 @@ pub enum KclValue {
 | 
			
		||||
 | 
			
		||||
impl KclValue {
 | 
			
		||||
    pub(crate) fn new_user_val<T: Serialize>(meta: Vec<Metadata>, val: T) -> Self {
 | 
			
		||||
        Self::UserVal(UserVal::set(meta, val))
 | 
			
		||||
        Self::UserVal(UserVal::new(meta, val))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub(crate) fn get_extrude_group_set(&self) -> Result<ExtrudeGroupSet> {
 | 
			
		||||
@ -364,14 +364,14 @@ impl KclValue {
 | 
			
		||||
 | 
			
		||||
impl From<SketchGroupSet> for KclValue {
 | 
			
		||||
    fn from(sg: SketchGroupSet) -> Self {
 | 
			
		||||
        KclValue::UserVal(UserVal::set(sg.meta(), sg))
 | 
			
		||||
        KclValue::UserVal(UserVal::new(sg.meta(), sg))
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl From<Vec<Box<SketchGroup>>> for KclValue {
 | 
			
		||||
    fn from(sg: Vec<Box<SketchGroup>>) -> Self {
 | 
			
		||||
        let meta = sg.iter().flat_map(|sg| sg.meta.clone()).collect();
 | 
			
		||||
        KclValue::UserVal(UserVal::set(meta, sg))
 | 
			
		||||
        KclValue::UserVal(UserVal::new(meta, sg))
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -662,6 +662,13 @@ pub struct UserVal {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl UserVal {
 | 
			
		||||
    pub fn new<T: serde::Serialize>(meta: Vec<Metadata>, val: T) -> Self {
 | 
			
		||||
        Self {
 | 
			
		||||
            meta,
 | 
			
		||||
            value: serde_json::to_value(val).expect("all KCL values should be compatible with JSON"),
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// If the UserVal matches the type `T`, return it.
 | 
			
		||||
    pub fn get<T: serde::de::DeserializeOwned>(&self) -> Option<(T, Vec<Metadata>)> {
 | 
			
		||||
        let meta = self.meta.clone();
 | 
			
		||||
@ -685,17 +692,9 @@ impl UserVal {
 | 
			
		||||
            return Ok(());
 | 
			
		||||
        };
 | 
			
		||||
        mutate(&mut val)?;
 | 
			
		||||
        *self = Self::set(meta, val);
 | 
			
		||||
        *self = Self::new(meta, val);
 | 
			
		||||
        Ok(())
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Put the given value into this UserVal.
 | 
			
		||||
    pub fn set<T: serde::Serialize>(meta: Vec<Metadata>, val: T) -> Self {
 | 
			
		||||
        Self {
 | 
			
		||||
            meta,
 | 
			
		||||
            value: serde_json::to_value(val).expect("all KCL values should be compatible with JSON"),
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, ts_rs::TS, JsonSchema)]
 | 
			
		||||
 | 
			
		||||
@ -21,7 +21,7 @@ pub async fn array_reduce(exec_state: &mut ExecState, args: Args) -> Result<KclV
 | 
			
		||||
    };
 | 
			
		||||
    inner_array_reduce(array, start, reduce_fn, exec_state, &args)
 | 
			
		||||
        .await
 | 
			
		||||
        .map(|sg| KclValue::UserVal(UserVal::set(sg.meta.clone(), sg)))
 | 
			
		||||
        .map(|sg| KclValue::UserVal(UserVal::new(sg.meta.clone(), sg)))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Take a starting value. Then, for each element of an array, calculate the next value,
 | 
			
		||||
 | 
			
		||||
@ -53,7 +53,7 @@ pub async fn offset_plane(_exec_state: &mut ExecState, args: Args) -> Result<Kcl
 | 
			
		||||
 | 
			
		||||
    let plane = inner_offset_plane(std_plane, offset).await?;
 | 
			
		||||
 | 
			
		||||
    Ok(KclValue::UserVal(UserVal::set(
 | 
			
		||||
    Ok(KclValue::UserVal(UserVal::new(
 | 
			
		||||
        vec![Metadata {
 | 
			
		||||
            source_range: args.source_range,
 | 
			
		||||
        }],
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user