min_max 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/min_max/src/lib.rs +7 -7
- data/lib/min_max/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80798043e91a2c00c6bda06b9cee1fe9544d9eb57c38d2d1ef41c4147614ff80
|
4
|
+
data.tar.gz: 7394b9168a389e57917780169a0a2574ea5982a4a373c67c36770bc893dfae75
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c746c1cbdba8f6e5e752949145bd2604eefa14b75a5c5cb6b6b1a0c81eaaa75538451438cc001769336cbdf9d2e118a2c2c9a397b3d6ea00ce70f37227de576
|
7
|
+
data.tar.gz: 172aa5d4652493bcfbcd92bbad0ffbd06c72910c63ddf7c59e665ed017d300ba453d18953983c44e95fb5362e4c37ebfad5d79c4167e3736deed47ebc32e0f74
|
data/ext/min_max/src/lib.rs
CHANGED
@@ -14,14 +14,14 @@ use std::collections::HashMap;
|
|
14
14
|
use std::sync::{Arc, RwLock};
|
15
15
|
|
16
16
|
#[derive(Debug, Clone)]
|
17
|
-
struct PriorityOrderableValue(i64,
|
17
|
+
struct PriorityOrderableValue(i64, i64);
|
18
18
|
|
19
19
|
#[macro_use]
|
20
20
|
extern crate lazy_static;
|
21
21
|
|
22
22
|
struct MEM(
|
23
|
-
RwLock<HashMap<
|
24
|
-
RwLock<HashMap<
|
23
|
+
RwLock<HashMap<i64, BoxValue<Value>>>,
|
24
|
+
RwLock<HashMap<i64, RefCell<usize>>>,
|
25
25
|
);
|
26
26
|
|
27
27
|
impl MEM {
|
@@ -36,13 +36,13 @@ lazy_static! {
|
|
36
36
|
static ref MEMORY: MEM = MEM::new();
|
37
37
|
}
|
38
38
|
|
39
|
-
fn get_rb_obj(key:
|
39
|
+
fn get_rb_obj(key: i64) -> Option<Value> {
|
40
40
|
let binding = (*MEMORY).0.read().unwrap();
|
41
41
|
let v = binding.get(&key).unwrap();
|
42
42
|
Some(**v)
|
43
43
|
}
|
44
44
|
|
45
|
-
fn pop_rb_obj(key:
|
45
|
+
fn pop_rb_obj(key: i64) -> Option<Value> {
|
46
46
|
let binding = (*MEMORY).1.read().unwrap();
|
47
47
|
let mut count = binding.get(&key).unwrap().borrow_mut();
|
48
48
|
if *count == 0 {
|
@@ -60,7 +60,7 @@ fn pop_rb_obj(key: usize) -> Option<Value> {
|
|
60
60
|
res
|
61
61
|
}
|
62
62
|
|
63
|
-
fn push_rb_obj(key:
|
63
|
+
fn push_rb_obj(key: i64, value: Value) -> i64 {
|
64
64
|
let mut binding = (*MEMORY).1.write().unwrap();
|
65
65
|
let mut count = binding.entry(key).or_insert(RefCell::new(0)).borrow_mut();
|
66
66
|
|
@@ -133,7 +133,7 @@ impl RubyMinMaxHeap {
|
|
133
133
|
let mut hp = self.heap.borrow_mut();
|
134
134
|
value.iter().for_each(|v| {
|
135
135
|
let priority: i64 = (*self.priority_proc).call([*v]).unwrap_or_default();
|
136
|
-
let key = v.hash().unwrap().
|
136
|
+
let key = v.hash().unwrap().to_i64().unwrap();
|
137
137
|
hp.push(PriorityOrderableValue(priority, push_rb_obj(key, *v)));
|
138
138
|
});
|
139
139
|
Ok(())
|
data/lib/min_max/version.rb
CHANGED