jsonptr_rs/
operate_by_jsonptr.rs1use 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}