diff --git a/crates/libs/core/src/strings/hstring.rs b/crates/libs/core/src/strings/hstring.rs
index 11f93c2fdb..b8acf67a47 100644
--- a/crates/libs/core/src/strings/hstring.rs
+++ b/crates/libs/core/src/strings/hstring.rs
@@ -191,6 +191,12 @@ impl Ord for HSTRING {
     }
 }
 
+impl std::hash::Hash for HSTRING {
+    fn hash<H: std::hash::Hasher>(&self, hasher: &mut H) {
+        self.as_wide().hash(hasher)
+    }
+}
+
 impl PartialOrd for HSTRING {
     fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
         Some(self.cmp(other))
diff --git a/crates/tests/core/tests/hstring.rs b/crates/tests/core/tests/hstring.rs
index 9b38bff9dd..8016cbf3e0 100644
--- a/crates/tests/core/tests/hstring.rs
+++ b/crates/tests/core/tests/hstring.rs
@@ -121,6 +121,50 @@ fn hstring_to_os_string() {
     assert_eq!(s, std::ffi::OsString::from_wide(wide_data));
 }
 
+#[test]
+fn hstring_hashing_equal_strings() {
+    // Checks if two strings of identical contents have the same hash
+    use std::hash::{DefaultHasher, Hash, Hasher};
+
+    let hstring_1 = HSTRING::from("Hello World");
+    let hstring_2 = HSTRING::from("Hello World");
+
+    assert_eq!(hstring_1, hstring_2);
+
+    let mut hasher_1 = DefaultHasher::new();
+    let mut hasher_2 = DefaultHasher::new();
+
+    hstring_1.hash(&mut hasher_1);
+    hstring_2.hash(&mut hasher_2);
+
+    let h1_hash = hasher_1.finish();
+    let h2_hash = hasher_2.finish();
+
+    assert_eq!(h1_hash, h2_hash);
+}
+
+#[test]
+fn hstring_hashing_different_strings() {
+    // Checks if two strings of different contents have the same hash
+    use std::hash::{DefaultHasher, Hash, Hasher};
+
+    let hstring_1 = HSTRING::from("Hello World");
+    let hstring_2 = HSTRING::from("Hello World 2");
+
+    assert_ne!(hstring_1, hstring_2);
+
+    let mut hasher_1 = DefaultHasher::new();
+    let mut hasher_2 = DefaultHasher::new();
+
+    hstring_1.hash(&mut hasher_1);
+    hstring_2.hash(&mut hasher_2);
+
+    let h1_hash = hasher_1.finish();
+    let h2_hash = hasher_2.finish();
+
+    assert_ne!(h1_hash, h2_hash);
+}
+
 #[test]
 fn hstring_equality_combinations() {
     let h = HSTRING::from("test");