[][src]Struct gulkana::DataStructure

pub struct DataStructure<KeyType: Ord + Clone + Serialize, DataType: Clone + Serialize, LinkLabel: Clone + Serialize> { /* fields omitted */ }

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]

Inserts data into datastructure

let mut ds = gulkana::new_datastructure::<u32,u32,u32>();
ds.insert(&10,5);
assert!(ds.insert(&10,20).is_err());

Used to insert a link into a datastructure

 let mut ds = gulkana::new_datastructure::<u32,u32,u32>();
 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);
 }

Overwrites Links with vec shown

 let mut ds = gulkana::new_datastructure::<u32,u32,u32>();
 ds.insert(&10,5);
 ds.insert(&11,6);
 ds.insert_link(&9,&vec![10],0);
 ds.overwrite_link(&9,&vec![11],0);
 ds.overwrite_link(&8,&vec![10],0);
 let iter = ds.iter_links(&9).ok().unwrap();

 for (_key,data) in iter{
     assert!(*data==6);
 }
 let iter2 = ds.iter_links(&8).ok().unwrap();

 for (_key,data) in iter2{
     assert!(*data==5);
 }

pub fn set_data(
    &mut self,
    key: &KeyType,
    data: &DataType
) -> Result<(), DBOperationError>
[src]

sets data in database

let mut ds = gulkana::new_datastructure::<u32,u32,u32>();
ds.insert(&10,3);
ds.set_data(&10,&5);
assert!(ds.get(&10).ok().unwrap()==&5);

pub fn iter_data(&self) -> DataNodeIter<KeyType, DataType, LinkLabel>[src]

Used to iterate through data

pub fn get_keys(&self) -> Vec<KeyType>[src]

Gets All keys in database


let mut ds = gulkana::new_datastructure::<u32,u32,u32>();
ds.insert(&10,5);
let out = ds.get_keys();
assert!(out[0]==10);

pub fn get(&self, key: &KeyType) -> Result<&DataType, DBOperationError>[src]

gets key from database


let mut ds = gulkana::new_datastructure::<u32,u32,u32>();
ds.insert(&10,5);
let data = ds.get(&10);
assert!(*data.ok().unwrap()==5);

Gets linked nodes

let mut ds = gulkana::new_datastructure::<u32,u32,u32>();
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);

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>();
ds.insert(&10,5);
assert!(ds.contains(&10));
assert!(!ds.contains(&20));

Gets iterator of links with labels

let mut ds = gulkana::new_datastructure::<u32,u32,u32>();
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 right_join(
    &self,
    right: &DataStructure<KeyType, DataType, LinkLabel>
) -> Result<DataStructure<KeyType, DataType, LinkLabel>, DBOperationError>
[src]

pub fn to_string(&self) -> Result<String, SerializeError> where
    KeyType: Serialize,
    DataType: Serialize,
    LinkLabel: Serialize
[src]

pub fn make_backed(
    &mut self,
    file_backing: &String
) -> Result<(), DBOperationError>
[src]

Makes the database backed

pub fn len(&self) -> usize[src]

Gets number of elements in db

let mut ds = gulkana::new_datastructure::<u32,u32,u32>();
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]

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]

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]

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]

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

impl<KeyType, DataType, LinkLabel> Send for DataStructure<KeyType, DataType, LinkLabel> where
    DataType: Send,
    KeyType: Send,
    LinkLabel: Send

impl<KeyType, DataType, LinkLabel> Sync for DataStructure<KeyType, DataType, LinkLabel> where
    DataType: Sync,
    KeyType: Sync,
    LinkLabel: Sync

impl<KeyType, DataType, LinkLabel> Unpin for DataStructure<KeyType, DataType, LinkLabel> where
    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

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> DeserializeOwned for T where
    T: Deserialize<'de>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,