min_max 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Cargo.lock +23 -13
- data/ext/min_max/Cargo.toml +2 -1
- data/ext/min_max/src/lib.rs +7 -8
- 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: aef5e878c1412daa7a16bf7aad72afff1bdcc4cfa37709e6a88601d6ef2f1a93
|
4
|
+
data.tar.gz: 74f22abb3ad7a47e654cf6033d0512e00344a373e21aa18e46f86a9d38e6dc17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b992bc50cd6e4920503b8a9257916dc3cb83326126c9e56c38fb693bbf513335573f8c7730386109044de48f58dd6e8a9c1da7f4a6e91e9f28e2aeb981cd23c
|
7
|
+
data.tar.gz: e5f84db084190697f2d8ab7738b70fc82ae2b4a23466936d47e74aef27e46dd39f1f2e5885b1a7d3f876f28aadc0dfc747dabffe36c05eaa3f4661f7424091bf
|
data/Cargo.lock
CHANGED
@@ -13,16 +13,16 @@ dependencies = [
|
|
13
13
|
|
14
14
|
[[package]]
|
15
15
|
name = "bindgen"
|
16
|
-
version = "0.
|
16
|
+
version = "0.69.4"
|
17
17
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
18
|
-
checksum = "
|
18
|
+
checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
|
19
19
|
dependencies = [
|
20
20
|
"bitflags",
|
21
21
|
"cexpr",
|
22
22
|
"clang-sys",
|
23
|
+
"itertools",
|
23
24
|
"lazy_static",
|
24
25
|
"lazycell",
|
25
|
-
"peeking_take_while",
|
26
26
|
"proc-macro2",
|
27
27
|
"quote",
|
28
28
|
"regex",
|
@@ -63,12 +63,27 @@ dependencies = [
|
|
63
63
|
"libloading",
|
64
64
|
]
|
65
65
|
|
66
|
+
[[package]]
|
67
|
+
name = "either"
|
68
|
+
version = "1.10.0"
|
69
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
70
|
+
checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
|
71
|
+
|
66
72
|
[[package]]
|
67
73
|
name = "glob"
|
68
74
|
version = "0.3.1"
|
69
75
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
70
76
|
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
71
77
|
|
78
|
+
[[package]]
|
79
|
+
name = "itertools"
|
80
|
+
version = "0.12.1"
|
81
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
82
|
+
checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
|
83
|
+
dependencies = [
|
84
|
+
"either",
|
85
|
+
]
|
86
|
+
|
72
87
|
[[package]]
|
73
88
|
name = "lazy_static"
|
74
89
|
version = "1.4.0"
|
@@ -139,6 +154,7 @@ dependencies = [
|
|
139
154
|
"lazy_static",
|
140
155
|
"magnus",
|
141
156
|
"min-max-heap",
|
157
|
+
"rb-sys",
|
142
158
|
]
|
143
159
|
|
144
160
|
[[package]]
|
@@ -157,12 +173,6 @@ dependencies = [
|
|
157
173
|
"minimal-lexical",
|
158
174
|
]
|
159
175
|
|
160
|
-
[[package]]
|
161
|
-
name = "peeking_take_while"
|
162
|
-
version = "0.1.2"
|
163
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
164
|
-
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
|
165
|
-
|
166
176
|
[[package]]
|
167
177
|
name = "proc-macro2"
|
168
178
|
version = "1.0.66"
|
@@ -183,18 +193,18 @@ dependencies = [
|
|
183
193
|
|
184
194
|
[[package]]
|
185
195
|
name = "rb-sys"
|
186
|
-
version = "0.9.
|
196
|
+
version = "0.9.89"
|
187
197
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
188
|
-
checksum = "
|
198
|
+
checksum = "0d197f2c03751ef006f29d593d22aa9068c9c358e04ca503afea0329c366147c"
|
189
199
|
dependencies = [
|
190
200
|
"rb-sys-build",
|
191
201
|
]
|
192
202
|
|
193
203
|
[[package]]
|
194
204
|
name = "rb-sys-build"
|
195
|
-
version = "0.9.
|
205
|
+
version = "0.9.89"
|
196
206
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
197
|
-
checksum = "
|
207
|
+
checksum = "2b50caf8fd028f12abe00d6debe2ae2adf6202c9ca3caa59487eda710d90fa28"
|
198
208
|
dependencies = [
|
199
209
|
"bindgen",
|
200
210
|
"lazy_static",
|
data/ext/min_max/Cargo.toml
CHANGED
data/ext/min_max/src/lib.rs
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
use magnus::block::Proc;
|
2
2
|
use magnus::scan_args::scan_args;
|
3
|
-
use magnus::value::
|
3
|
+
use magnus::value::ReprValue;
|
4
4
|
use magnus::{
|
5
5
|
block::{block_given, Yield},
|
6
6
|
define_class, function, method,
|
7
7
|
prelude::*,
|
8
8
|
Error, IntoValue, RArray, Ruby, Value,
|
9
9
|
};
|
10
|
-
use magnus::{eval, DataTypeFunctions, RHash, RString, TypedData};
|
10
|
+
use magnus::{eval, gc, DataTypeFunctions, RHash, RString, TypedData};
|
11
11
|
use min_max_heap::MinMaxHeap;
|
12
12
|
use std::cell::RefCell;
|
13
13
|
use std::collections::HashMap;
|
@@ -20,7 +20,7 @@ struct PriorityOrderableValue(i64, i64);
|
|
20
20
|
extern crate lazy_static;
|
21
21
|
|
22
22
|
struct MEM(
|
23
|
-
RwLock<HashMap<i64,
|
23
|
+
RwLock<HashMap<i64, Box<Value>>>,
|
24
24
|
RwLock<HashMap<i64, RefCell<usize>>>,
|
25
25
|
);
|
26
26
|
|
@@ -51,6 +51,7 @@ fn pop_rb_obj(key: i64) -> Option<Value> {
|
|
51
51
|
*count -= 1;
|
52
52
|
let res = if *count == 0 {
|
53
53
|
let val = (*MEMORY).0.write().unwrap().remove(&key).unwrap();
|
54
|
+
gc::unregister_address(&*val);
|
54
55
|
Some(*val)
|
55
56
|
} else {
|
56
57
|
let binding = (*MEMORY).0.read().unwrap();
|
@@ -66,11 +67,9 @@ fn push_rb_obj(key: i64, value: Value) -> i64 {
|
|
66
67
|
|
67
68
|
*count += 1;
|
68
69
|
if *count == 1 {
|
69
|
-
(
|
70
|
-
|
71
|
-
|
72
|
-
.unwrap()
|
73
|
-
.insert(key, BoxValue::new(value));
|
70
|
+
let boxed = Box::new(value);
|
71
|
+
gc::register_address(&*boxed);
|
72
|
+
(*MEMORY).0.write().unwrap().insert(key, boxed);
|
74
73
|
};
|
75
74
|
return key;
|
76
75
|
}
|
data/lib/min_max/version.rb
CHANGED