1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
use crate::conversion::{BorrowFromGValue, FromGValue}; use crate::GValue; use crate::GremlinResult; #[derive(Debug, PartialEq, Clone)] pub struct Property { label: String, value: Box<GValue>, } impl Property { pub fn new<T, GT>(label: T, value: GT) -> Property where T: Into<String>, GT: Into<GValue>, { Property { label: label.into(), value: Box::new(value.into()), } } pub fn value(&self) -> &GValue { &self.value } pub fn take<T>(self) -> GremlinResult<T> where T: FromGValue, { T::from_gvalue(*self.value) } pub fn get<'a, T>(&'a self) -> GremlinResult<&'a T> where T: BorrowFromGValue, { T::from_gvalue(&self.value) } pub fn label(&self) -> &String { &self.label } }