about summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Cargo.toml9
-rw-r--r--lib/src/lib.rs50
2 files changed, 59 insertions, 0 deletions
diff --git a/lib/Cargo.toml b/lib/Cargo.toml
new file mode 100644
index 0000000..a43e09e
--- /dev/null
+++ b/lib/Cargo.toml
@@ -0,0 +1,9 @@
+[package]
+name = "lib"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+serde = { version = "1.0", features = ["derive"] }
diff --git a/lib/src/lib.rs b/lib/src/lib.rs
new file mode 100644
index 0000000..a11637f
--- /dev/null
+++ b/lib/src/lib.rs
@@ -0,0 +1,50 @@
+pub mod lib {
+    use serde::{Serialize,Deserialize};
+    use std::sync::Arc;
+    use std::hash::{Hash, Hasher};
+    use std::cmp::Ordering;
+
+    #[derive(Serialize, Deserialize, Debug)]
+    pub struct CrawledResource {
+        pub url: String,
+        pub content: String,
+    }
+
+    #[derive(Debug, Clone, Serialize, Deserialize)]
+    pub struct IndexedResource {
+        pub url: String,
+        pub title: String,
+        pub description: String,
+        pub priority: u32,
+        pub word: Arc<String>,
+    }
+
+    //We implement PartialEq, Eq and Hash to ignore the priority field.
+    impl PartialEq for IndexedResource {
+        fn eq(&self, other: &Self) -> bool {
+            self.url == other.url && self.word == other.word
+        }
+    }
+    impl Eq for IndexedResource {}
+
+    impl PartialOrd for IndexedResource {
+        fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+            Some(self.cmp(other))
+        }
+    }
+
+    impl Ord for IndexedResource {
+        fn cmp(&self, other: &Self) -> Ordering {
+            self.priority.cmp(&other.priority).reverse()
+        }
+    }
+
+    impl Hash for IndexedResource {
+        fn hash<H: Hasher>(&self, state: &mut H) {
+            self.url.hash(state);
+            self.word.hash(state);
+        }
+    }
+
+
+}
\ No newline at end of file