///|
pub fn stable_string_hash(value : String) -> Int {
let mut state = 1_469_598_103
for character in value.to_array() {
state = ((state ^ character.to_int()) * 16_777_619) & positive_mask
}
mix_hash(state, 0x4a7c15)
}
///|
pub fn StringFuseFilter::build(
values : Array[String],
) -> Result[StringFuseFilter, FuseError] {
let hashes : Array[Int] = []
for value in values {
hashes.push(stable_string_hash(value))
}
match BinaryFuseFilter::build(hashes) {
Ok(filter) => Ok({ filter, })
Err(error) => Err(error)
}
}
///|
pub fn StringFuseFilter::build16(
values : Array[String],
) -> Result[StringFuseFilter, FuseError] {
let hashes : Array[Int] = []
for value in values {
hashes.push(stable_string_hash(value))
}
match BinaryFuseFilter::build16(hashes) {
Ok(filter) => Ok({ filter, })
Err(error) => Err(error)
}
}
///|
pub fn StringFuseFilter::contains(
self : StringFuseFilter,
value : String,
) -> Bool {
self.filter.contains(stable_string_hash(value))
}
///|
pub fn StringFuseFilter::len(self : StringFuseFilter) -> Int {
self.filter.len()
}
///|
pub fn StringFuseFilter::stats(self : StringFuseFilter) -> BuildStats {
self.filter.stats()
}