jsonptr_rs/
operate_by_jsonptr.rs

1use crate::pointer::JsonPointer;
2use anyhow::Result;
3use serde_json::Value;
4
5pub trait OperateByJsonptr {
6    fn get_by_ptr(&self, ptr: &JsonPointer) -> Result<&Value>;
7    fn add(&mut self, ptr: &JsonPointer, val: Value) -> Result<()>;
8    fn replace(&mut self, ptr: &JsonPointer, val: Value) -> Result<()>;
9    fn delete(&mut self, ptr: &JsonPointer) -> Result<Value>;
10}
11
12impl OperateByJsonptr for Value {
13    fn get_by_ptr(&self, ptr: &JsonPointer) -> Result<&Value> {
14        ptr.get(self)
15    }
16
17    fn add(&mut self, ptr: &JsonPointer, val: Value) -> Result<()> {
18        let mut_ref = ptr.get_mut(self)?;
19        mut_ref.add(val)
20    }
21
22    fn replace(&mut self, ptr: &JsonPointer, val: Value) -> Result<()> {
23        let mut_ref = ptr.get_mut(self)?;
24        mut_ref.replace(val)
25    }
26
27    fn delete(&mut self, ptr: &JsonPointer) -> Result<Value> {
28        let mut_ref = ptr.get_mut(self)?;
29        mut_ref.delete()
30    }
31}