From 9b3601717c8cae243667bd6e72adb08476779172 Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Sun, 13 Aug 2023 17:51:41 +0400 Subject: Add batched generation --- src/main.rs | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'src') 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::>(); + // for i in &gi { + // print_graph(i, gi.size); + // } + + let q = gi.take(2000000).collect::>(); + println!("{}", q.len()); // println!("{:?}", q); // for i in q { // print_graph(i, gi.size); // } - for i in &gi { - print_graph(i, gi.size); - } } -- cgit v1.2.3