summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorAndrew Guschin <guschin.drew@gmail.com>2023-08-13 17:51:41 +0400
committerAndrew Guschin <guschin.drew@gmail.com>2023-08-13 17:51:41 +0400
commit9b3601717c8cae243667bd6e72adb08476779172 (patch)
tree950f7f809bfeb645689dd5ef6f3f2a6477b69b5b /src/main.rs
parente8c4828e9e9459f66c0b22ea379f70c4c6c3ba23 (diff)
Add batched generation
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/main.rs b/src/main.rs
index ac9995b..7012c99 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -11,6 +11,7 @@ extern "C" {
batch_size: usize,
);
fn geng_iterator_next(iter: *const geng_iterator, g: *mut u32) -> bool;
+ fn geng_iterator_destroy(iter: *const geng_iterator);
fn printgraph(g: *const u32, n: usize);
}
@@ -29,7 +30,7 @@ impl GengIterator {
fn new(n: usize) -> GengIterator {
let iter = unsafe {
let iter: *mut geng_iterator = ptr::null_mut();
- geng_iterator_create(&iter, n, 100);
+ geng_iterator_create(&iter, n, 10000);
Box::from_raw(iter)
};
GengIterator { size: n, iter }
@@ -54,15 +55,26 @@ impl Iterator for &GengIterator {
}
}
+impl Drop for GengIterator {
+ fn drop(&mut self) {
+ unsafe {
+ let ptr: *const geng_iterator = &*self.iter;
+ geng_iterator_destroy(ptr);
+ }
+ }
+}
+
fn main() {
- let gi = GengIterator::new(2);
+ let gi = GengIterator::new(10);
- // let q = gi.take(2).collect::<Vec<_>>();
+ // for i in &gi {
+ // print_graph(i, gi.size);
+ // }
+
+ let q = gi.take(2000000).collect::<Vec<_>>();
+ println!("{}", q.len());
// println!("{:?}", q);
// for i in q {
// print_graph(i, gi.size);
// }
- for i in &gi {
- print_graph(i, gi.size);
- }
}