commit b8d1fd1d6f7ec520b1af992b79220dbea7ccaf30
parent 796a1ce068193cead42202e102d34b677c014731
Author: William Casarin <jb55@jb55.com>
Date: Sun, 23 Mar 2025 15:30:17 -0700
filter: expose initial buffer size option
Diffstat:
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/src/filter.rs b/src/filter.rs
@@ -95,8 +95,8 @@ impl bindings::ndb_filter {
}
}
-impl Default for bindings::ndb_filter {
- fn default() -> Self {
+impl bindings::ndb_filter {
+ fn new(pages: i32) -> Self {
let null = null_mut();
let mut filter_data = bindings::ndb_filter {
finalized: 0,
@@ -116,7 +116,7 @@ impl Default for bindings::ndb_filter {
};
unsafe {
- bindings::ndb_filter_init(filter_data.as_mut_ptr());
+ bindings::ndb_filter_init_with(filter_data.as_mut_ptr(), pages);
};
filter_data
@@ -124,13 +124,17 @@ impl Default for bindings::ndb_filter {
}
impl Filter {
- #[allow(clippy::new_ret_no_self)]
- pub fn new() -> FilterBuilder {
+ pub fn new_with_capacity(pages: i32) -> FilterBuilder {
FilterBuilder {
- data: Default::default(),
+ data: bindings::ndb_filter::new(pages),
}
}
+ #[allow(clippy::new_ret_no_self)]
+ pub fn new() -> FilterBuilder {
+ Self::new_with_capacity(256)
+ }
+
pub fn copy_from<'a, I>(filter: I) -> FilterBuilder
where
I: IntoIterator<Item = FilterField<'a>>,
@@ -315,9 +319,7 @@ impl Default for FilterBuilder {
impl FilterBuilder {
pub fn new() -> FilterBuilder {
- Self {
- data: Default::default(),
- }
+ Self::default()
}
pub fn to_ref(&self) -> &bindings::ndb_filter {