[−][src]Struct gulkana::DataStructure
Struct usd to store data Inorder to allow new fields in input struct to be added make all fields Optional e.g.
struct bar{ foo:Option<String>, bar:Option<u32>, }
this way the data structure is compatible with old versions of the database.
Methods
impl<KeyType: Ord + Clone + Serialize, DataType: Clone + Serialize, LinkLabel: Clone + Serialize> DataStructure<KeyType, DataType, LinkLabel>
[src]
pub fn insert(
&mut self,
key: &KeyType,
data: DataType
) -> Result<(), DBOperationError>
[src]
&mut self,
key: &KeyType,
data: DataType
) -> Result<(), DBOperationError>
Inserts data into datastructure
let mut ds = gulkana::new_datastructure::<u32,u32,u32>(None); ds.insert(&10,5); assert!(ds.insert(&10,20).is_err());
pub fn insert_link(
&mut self,
key: &KeyType,
children: &Vec<KeyType>,
link_type: LinkLabel
) -> Result<(), DBOperationError>
[src]
&mut self,
key: &KeyType,
children: &Vec<KeyType>,
link_type: LinkLabel
) -> Result<(), DBOperationError>
Used to insert a link into a datastructure
let mut ds = gulkana::new_datastructure::<u32,u32,u32>(None); ds.insert(&10,5); ds.insert_link(&9,&vec![10],0); let iter = ds.iter_links(&9).ok().unwrap(); for (i,j) in iter{ assert!(*j==5); }
pub fn overwrite_link(
&mut self,
key: &KeyType,
children: &Vec<KeyType>,
link_type: LinkLabel
) -> Result<(), DBOperationError>
[src]
&mut self,
key: &KeyType,
children: &Vec<KeyType>,
link_type: LinkLabel
) -> Result<(), DBOperationError>
Overwrites Links with vec shown
let mut ds = gulkana::new_datastructure::<u32,u32,u32>(None); ds.insert(&10,5); ds.insert(&11,6); ds.insert_link(&9,&vec![10],0); ds.overwrite_link(&9,&vec![11],0); let iter = ds.iter_links(&9).ok().unwrap(); for (_key,data) in iter{ assert!(*data==6); }
pub fn set_data(
&mut self,
key: &KeyType,
data: &DataType
) -> Result<(), DBOperationError>
[src]
&mut self,
key: &KeyType,
data: &DataType
) -> Result<(), DBOperationError>
sets data in database
let mut ds = gulkana::new_datastructure::<u32,u32,u32>(None); ds.insert(&10,3); ds.set_data(&10,&5); assert!(ds.get(&10).ok().unwrap()==&5);
ⓘImportant traits for DataNodeIter<'a, KeyType, DataType, LinkLabel>pub fn iter_data(&self) -> DataNodeIter<KeyType, DataType, LinkLabel>
[src]
ⓘImportant traits for DataNodeIter<'a, KeyType, DataType, LinkLabel>
Used to iterate through data
pub fn get(&self, key: &KeyType) -> Result<&DataType, DBOperationError>
[src]
gets key from database
let mut ds = gulkana::new_datastructure::<u32,u32,u32>(None); ds.insert(&10,5); let data = ds.get(&10); assert!(*data.ok().unwrap()==5);
pub fn get_links(
&self,
key: &KeyType
) -> Result<&Vec<KeyType>, DBOperationError>
[src]
&self,
key: &KeyType
) -> Result<&Vec<KeyType>, DBOperationError>
Gets linked nodes
let mut ds = gulkana::new_datastructure::<u32,u32,u32>(None); ds.insert(&10,5); ds.insert(&11,6); ds.insert_link(&9,&vec![10],0); let v = ds.get_links(&9).ok().unwrap(); assert!(v[0]==10);
pub fn iter_links(
&self,
key: &KeyType
) -> Result<DataLinkIter<KeyType, DataType, LinkLabel>, DBOperationError>
[src]
&self,
key: &KeyType
) -> Result<DataLinkIter<KeyType, DataType, LinkLabel>, DBOperationError>
Iterates through nodes attached to link
pub fn contains(&self, key: &KeyType) -> bool
[src]
Checks if database contains a given key
let mut ds = gulkana::new_datastructure::<u32,u32,u32>(None); ds.insert(&10,5); assert!(ds.contains(&10)); assert!(!ds.contains(&20));
ⓘImportant traits for DataLinkIterNoRef<'a, KeyType, DataType, LinkLabel>pub fn iter_link_type(
&self,
link_type: &LinkLabel
) -> DataLinkIterNoRef<KeyType, DataType, LinkLabel> where
LinkLabel: PartialEq,
[src]
ⓘImportant traits for DataLinkIterNoRef<'a, KeyType, DataType, LinkLabel>
&self,
link_type: &LinkLabel
) -> DataLinkIterNoRef<KeyType, DataType, LinkLabel> where
LinkLabel: PartialEq,
Gets iterator of links with labels
let mut ds = gulkana::new_datastructure::<u32,u32,u32>(None); ds.insert(&10,5); ds.insert_link(&9,&vec![10],0); for (link,linked_keys) in ds.iter_link_type(&0){ assert!(link==9); }
pub fn append_links(
&mut self,
key: &KeyType,
key_append: &KeyType
) -> Result<(), DBOperationError>
[src]
&mut self,
key: &KeyType,
key_append: &KeyType
) -> Result<(), DBOperationError>
pub fn right_join(
&self,
right: &DataStructure<KeyType, DataType, LinkLabel>
) -> Result<DataStructure<KeyType, DataType, LinkLabel>, DBOperationError>
[src]
&self,
right: &DataStructure<KeyType, DataType, LinkLabel>
) -> Result<DataStructure<KeyType, DataType, LinkLabel>, DBOperationError>
pub fn to_string(&self) -> Result<String, SerializeError> where
KeyType: Serialize,
DataType: Serialize,
LinkLabel: Serialize,
[src]
KeyType: Serialize,
DataType: Serialize,
LinkLabel: Serialize,
pub fn len(&self) -> usize
[src]
Gets number of elements in db
let mut ds = gulkana::new_datastructure::<u32,u32,u32>(None); assert!(ds.len()==0); ds.insert(&20,20); assert!(ds.len()==1);
Trait Implementations
impl<KeyType: Clone + Ord + Serialize, DataType: Clone + Serialize, LinkLabel: Clone + Serialize> Clone for DataStructure<KeyType, DataType, LinkLabel>
[src]
fn clone(&self) -> DataStructure<KeyType, DataType, LinkLabel>
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<'de, KeyType: Ord + Clone + Serialize, DataType: Clone + Serialize, LinkLabel: Clone + Serialize> Deserialize<'de> for DataStructure<KeyType, DataType, LinkLabel> where
KeyType: Deserialize<'de>,
DataType: Deserialize<'de>,
LinkLabel: Deserialize<'de>,
[src]
KeyType: Deserialize<'de>,
DataType: Deserialize<'de>,
LinkLabel: Deserialize<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
__D: Deserializer<'de>,
impl<K: Ord + Display + Clone + Serialize, DataType: Clone + Serialize, I: Clone + Serialize> Display for DataStructure<K, DataType, I>
[src]
impl<KeyType: Eq + Ord + Clone + Serialize, DataType: Eq + Clone + Serialize, LinkLabel: Eq + Clone + Serialize> Eq for DataStructure<KeyType, DataType, LinkLabel>
[src]
impl<KeyType: PartialEq + Ord + Clone + Serialize, DataType: PartialEq + Clone + Serialize, LinkLabel: PartialEq + Clone + Serialize> PartialEq<DataStructure<KeyType, DataType, LinkLabel>> for DataStructure<KeyType, DataType, LinkLabel>
[src]
fn eq(&self, other: &DataStructure<KeyType, DataType, LinkLabel>) -> bool
[src]
fn ne(&self, other: &DataStructure<KeyType, DataType, LinkLabel>) -> bool
[src]
impl<KeyType: Ord + Clone + Serialize, DataType: Clone + Serialize, LinkLabel: Clone + Serialize> Serialize for DataStructure<KeyType, DataType, LinkLabel> where
KeyType: Serialize,
DataType: Serialize,
LinkLabel: Serialize,
[src]
KeyType: Serialize,
DataType: Serialize,
LinkLabel: Serialize,
fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where
__S: Serializer,
[src]
__S: Serializer,
impl<KeyType: Ord + Clone + Serialize, DataType: Clone + Serialize, LinkLabel: Clone + Serialize> StructuralEq for DataStructure<KeyType, DataType, LinkLabel>
[src]
impl<KeyType: Ord + Clone + Serialize, DataType: Clone + Serialize, LinkLabel: Clone + Serialize> StructuralPartialEq for DataStructure<KeyType, DataType, LinkLabel>
[src]
Auto Trait Implementations
impl<KeyType, DataType, LinkLabel> RefUnwindSafe for DataStructure<KeyType, DataType, LinkLabel> where
DataType: RefUnwindSafe,
KeyType: RefUnwindSafe,
LinkLabel: RefUnwindSafe,
DataType: RefUnwindSafe,
KeyType: RefUnwindSafe,
LinkLabel: RefUnwindSafe,
impl<KeyType, DataType, LinkLabel> Send for DataStructure<KeyType, DataType, LinkLabel> where
DataType: Send,
KeyType: Send,
LinkLabel: Send,
DataType: Send,
KeyType: Send,
LinkLabel: Send,
impl<KeyType, DataType, LinkLabel> Sync for DataStructure<KeyType, DataType, LinkLabel> where
DataType: Sync,
KeyType: Sync,
LinkLabel: Sync,
DataType: Sync,
KeyType: Sync,
LinkLabel: Sync,
impl<KeyType, DataType, LinkLabel> Unpin for DataStructure<KeyType, DataType, LinkLabel> where
DataType: Unpin,
KeyType: Unpin,
LinkLabel: Unpin,
DataType: Unpin,
KeyType: Unpin,
LinkLabel: Unpin,
impl<KeyType, DataType, LinkLabel> UnwindSafe for DataStructure<KeyType, DataType, LinkLabel> where
DataType: RefUnwindSafe + UnwindSafe,
KeyType: RefUnwindSafe + UnwindSafe,
LinkLabel: RefUnwindSafe + UnwindSafe,
DataType: RefUnwindSafe + UnwindSafe,
KeyType: RefUnwindSafe + UnwindSafe,
LinkLabel: RefUnwindSafe + UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> DeserializeOwned for T where
T: Deserialize<'de>,
[src]
T: Deserialize<'de>,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,