summaryrefslogtreecommitdiffstats
path: root/src/dag_backend.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/dag_backend.rs')
-rw-r--r--src/dag_backend.rs29
1 files changed, 11 insertions, 18 deletions
diff --git a/src/dag_backend.rs b/src/dag_backend.rs
index 62b2cef..bfc75f8 100644
--- a/src/dag_backend.rs
+++ b/src/dag_backend.rs
@@ -26,9 +26,8 @@ pub trait DagBackend<Id, N>
///
/// * Should return Err(_) if the operation failed.
/// * Should return Ok(None) if there is no node that is identified by `id`
- ///
- /// Otherwise Ok(Some(node)).
- async fn get(&self, id: Id) -> Result<Option<N>>;
+ /// * Otherwise return the Id along with the node identified by it
+ async fn get(&self, id: Id) -> Result<Option<(Id, N)>>;
/// Store a `node` in the backend, returning its `Id`
///
@@ -51,9 +50,8 @@ mod tests {
#[test]
fn test_backend_get() {
let b = test::Backend::new(vec![Some(test::Node {
- id: test::Id(0),
parents: vec![],
- data: 42,
+ data: 0,
})]);
let node = tokio_test::block_on(b.get(test::Id(0)));
@@ -63,24 +61,21 @@ mod tests {
assert!(node.is_some());
let node = node.unwrap();
- assert_eq!(node.data, 42);
- assert_eq!(node.id, test::Id(0));
- assert!(node.parents.is_empty());
+ assert_eq!(node.0, test::Id(0));
+ assert!(node.1.parents.is_empty());
}
#[test]
fn test_backend_put() {
let mut b = test::Backend::new(vec![Some(test::Node {
- id: test::Id(0),
parents: vec![],
- data: 42,
+ data: 0,
})]);
let id = tokio_test::block_on(b.put({
test::Node {
- id: test::Id(1),
parents: vec![],
- data: 43,
+ data: 1,
}
}));
@@ -92,9 +87,8 @@ mod tests {
assert!(node.is_some());
let node = node.unwrap();
- assert_eq!(node.data, 42);
- assert_eq!(node.id, test::Id(0));
- assert!(node.parents.is_empty());
+ assert_eq!(node.0, test::Id(0));
+ assert!(node.1.parents.is_empty());
}
{
let node = tokio_test::block_on(b.get(test::Id(1)));
@@ -104,9 +98,8 @@ mod tests {
assert!(node.is_some());
let node = node.unwrap();
- assert_eq!(node.data, 43);
- assert_eq!(node.id, test::Id(1));
- assert!(node.parents.is_empty());
+ assert_eq!(node.0, test::Id(1));
+ assert!(node.1.parents.is_empty());
}
{
let node = tokio_test::block_on(b.get(test::Id(2)));