pub struct DataStoreNode<'store> { /* private fields */ }Expand description
Element borrowed from the linked list of nodes that make up a DataStore.
§Lifetime 'store
A DataStoreNode is borrowed from a DataStore, and cannot outlive the DataStore
it was borrowed from:
ⓘ
let mut store = DataStore::new();
store.add_named_i64("value", 5);
let node = store.first_node().unwrap();
drop(store);
// Error: `node` cannot outlive `store`.
println!("node name: {:?}", node.name());Implementations§
Source§impl<'store> DataStoreNode<'store>
impl<'store> DataStoreNode<'store>
Sourcepub fn name(&self) -> Option<String>
pub fn name(&self) -> Option<String>
Get the name associated with this node, if any.
LibraryLink C Function: DataStoreNode_getName.
Examples found in repository?
examples/tests/test_data_store.rs (line 147)
123fn test_data_store_nodes() {
124 {
125 let mut data = DataStore::new();
126 data.add_i64(5);
127
128 assert_eq!(data.len(), 1);
129
130 let node = data.first_node().expect("got first node");
131
132 let ty: sys::type_t = node.data_type_raw();
133
134 assert_eq!(ty, sys::MType_Integer as i32);
135 }
136
137 // Test DataStoreNode::name() method.
138 {
139 let mut data = DataStore::new();
140 data.add_named_i64("hello", 5);
141
142 assert_eq!(data.len(), 1);
143
144 let node = data.first_node().expect("got first node");
145
146 assert_eq!(node.data_type_raw(), sys::MType_Integer as i32);
147 assert_eq!(node.name(), Some("hello".to_owned()))
148 }
149
150 // Test DataStore::nodes() method and Debug formatting of DataStoreNode.
151 {
152 let mut store = DataStore::new();
153
154 store.add_i64(5);
155 store.add_named_bool("condition", true);
156 store.add_str("Hello, World!");
157
158 let mut nodes = store.nodes();
159
160 assert_eq!(
161 format!("{:?}", nodes.next().unwrap()),
162 r#"DataStoreNode { name: None, value: 5 }"#
163 );
164 assert_eq!(
165 format!("{:?}", nodes.next().unwrap()),
166 r#"DataStoreNode { name: Some("condition"), value: true }"#
167 );
168 assert_eq!(
169 format!("{:?}", nodes.next().unwrap()),
170 r#"DataStoreNode { name: None, value: "Hello, World!" }"#
171 );
172 assert!(nodes.next().is_none());
173 }
174}Sourcepub fn value<'node>(&'node self) -> DataStoreNodeValue<'node>
pub fn value<'node>(&'node self) -> DataStoreNodeValue<'node>
Get the value stored in this DataStoreNode.
This is a safe wrapper around DataStoreNode::data_raw().
Examples found in repository?
examples/data_store.rs (line 37)
31fn string_join(store: DataStore) -> String {
32 let mut buffer = String::new();
33
34 for node in store.nodes() {
35 // If `node.value()` is a string, append it to our string.
36 // If `node.value()` is NOT a string, silently skip it.
37 if let DataStoreNodeValue::Str(string) = node.value() {
38 buffer.push_str(string);
39 }
40 }
41
42 buffer
43}Sourcepub fn next_node(&self) -> Option<DataStoreNode<'store>>
pub fn next_node(&self) -> Option<DataStoreNode<'store>>
Get the next node in this linked list of DataStoreNode’s.
LibraryLink C Function: DataStoreNode_getNextNode.
Sourcepub fn data_type_raw(&self) -> type_t
pub fn data_type_raw(&self) -> type_t
LibraryLink C Function: DataStoreNode_getDataType.
Examples found in repository?
examples/tests/test_data_store.rs (line 132)
123fn test_data_store_nodes() {
124 {
125 let mut data = DataStore::new();
126 data.add_i64(5);
127
128 assert_eq!(data.len(), 1);
129
130 let node = data.first_node().expect("got first node");
131
132 let ty: sys::type_t = node.data_type_raw();
133
134 assert_eq!(ty, sys::MType_Integer as i32);
135 }
136
137 // Test DataStoreNode::name() method.
138 {
139 let mut data = DataStore::new();
140 data.add_named_i64("hello", 5);
141
142 assert_eq!(data.len(), 1);
143
144 let node = data.first_node().expect("got first node");
145
146 assert_eq!(node.data_type_raw(), sys::MType_Integer as i32);
147 assert_eq!(node.name(), Some("hello".to_owned()))
148 }
149
150 // Test DataStore::nodes() method and Debug formatting of DataStoreNode.
151 {
152 let mut store = DataStore::new();
153
154 store.add_i64(5);
155 store.add_named_bool("condition", true);
156 store.add_str("Hello, World!");
157
158 let mut nodes = store.nodes();
159
160 assert_eq!(
161 format!("{:?}", nodes.next().unwrap()),
162 r#"DataStoreNode { name: None, value: 5 }"#
163 );
164 assert_eq!(
165 format!("{:?}", nodes.next().unwrap()),
166 r#"DataStoreNode { name: Some("condition"), value: true }"#
167 );
168 assert_eq!(
169 format!("{:?}", nodes.next().unwrap()),
170 r#"DataStoreNode { name: None, value: "Hello, World!" }"#
171 );
172 assert!(nodes.next().is_none());
173 }
174}Sourcepub unsafe fn data_raw(&self) -> &MArgument
pub unsafe fn data_raw(&self) -> &MArgument
LibraryLink C Function: DataStoreNode_getData.
Sourcepub unsafe fn try_data_raw<'node>(
&'node self,
) -> Result<&'node MArgument, errcode_t>
pub unsafe fn try_data_raw<'node>( &'node self, ) -> Result<&'node MArgument, errcode_t>
LibraryLink C Function: DataStoreNode_getData.
Trait Implementations§
Auto Trait Implementations§
impl<'store> !Freeze for DataStoreNode<'store>
impl<'store> !Send for DataStoreNode<'store>
impl<'store> !Sync for DataStoreNode<'store>
impl<'store> RefUnwindSafe for DataStoreNode<'store>
impl<'store> Unpin for DataStoreNode<'store>
impl<'store> UnsafeUnpin for DataStoreNode<'store>
impl<'store> UnwindSafe for DataStoreNode<'store>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more