File tree Expand file tree Collapse file tree 3 files changed +48
-18
lines changed Expand file tree Collapse file tree 3 files changed +48
-18
lines changed Original file line number Diff line number Diff line change @@ -142,24 +142,6 @@ impl<T> Cursor<T> {
142
142
. and_then ( |c| c. post_batch_resume_token ( ) )
143
143
}
144
144
145
- /// Whether this cursor has exhausted all of its getMore calls. The cursor may have more
146
- /// items remaining in the buffer.
147
- pub ( crate ) fn is_exhausted ( & self ) -> bool {
148
- self . wrapped_cursor . as_ref ( ) . unwrap ( ) . is_exhausted ( )
149
- }
150
-
151
- /// Whether this cursor has any additional items to return.
152
- pub ( crate ) fn has_next ( & self ) -> bool {
153
- !self . is_exhausted ( )
154
- || !self
155
- . wrapped_cursor
156
- . as_ref ( )
157
- . unwrap ( )
158
- . state ( )
159
- . buffer
160
- . is_empty ( )
161
- }
162
-
163
145
pub ( crate ) fn client ( & self ) -> & Client {
164
146
& self . client
165
147
}
@@ -240,6 +222,23 @@ impl<T> Cursor<T> {
240
222
self . wrapped_cursor . as_ref ( ) . unwrap ( ) . current ( ) . unwrap ( )
241
223
}
242
224
225
+ /// Whether this cursor has exhausted all of its getMore calls. The cursor may have more
226
+ /// items remaining in the buffer.
227
+ pub ( crate ) fn is_exhausted ( & self ) -> bool {
228
+ self . wrapped_cursor . as_ref ( ) . unwrap ( ) . is_exhausted ( )
229
+ }
230
+
231
+ /// Returns true if the cursor has any additional items to return and false otherwise.
232
+ pub fn has_next ( & self ) -> bool {
233
+ !self . is_exhausted ( )
234
+ || !self
235
+ . wrapped_cursor
236
+ . as_ref ( )
237
+ . unwrap ( )
238
+ . state ( )
239
+ . buffer
240
+ . is_empty ( )
241
+ }
243
242
/// Deserialize the current result to the generic type associated with this cursor.
244
243
///
245
244
/// # Panics
Original file line number Diff line number Diff line change @@ -130,6 +130,11 @@ impl<T> Cursor<T> {
130
130
self . async_cursor . current ( )
131
131
}
132
132
133
+ /// Returns true if the cursor has any additional items to return and false otherwise.
134
+ pub fn has_next ( & self ) -> bool {
135
+ self . async_cursor . has_next ( )
136
+ }
137
+
133
138
/// Deserialize the current result to the generic type associated with this cursor.
134
139
///
135
140
/// # Panics
Original file line number Diff line number Diff line change @@ -263,3 +263,29 @@ async fn cursor_final_batch() {
263
263
}
264
264
assert_eq ! ( found, 5 ) ;
265
265
}
266
+
267
+ #[ tokio:: test]
268
+ async fn cursor_has_next ( ) {
269
+ let client = Client :: for_test ( ) . await ;
270
+ let coll = client
271
+ . create_fresh_collection ( "test_cursor_has_next" , "test" , None )
272
+ . await ;
273
+ coll. insert_many ( vec ! [
274
+ doc! { "foo" : 1 } ,
275
+ doc! { "foo" : 2 } ,
276
+ doc! { "foo" : 3 } ,
277
+ doc! { "foo" : 4 } ,
278
+ doc! { "foo" : 5 } ,
279
+ ] )
280
+ . await
281
+ . unwrap ( ) ;
282
+
283
+ let mut cursor = coll. find ( doc ! { } ) . batch_size ( 2 ) . await . unwrap ( ) ;
284
+ let mut found = 0 ;
285
+ while cursor. has_next ( ) {
286
+ if cursor. advance ( ) . await . unwrap ( ) {
287
+ found += 1 ;
288
+ }
289
+ }
290
+ assert_eq ! ( found, 5 ) ;
291
+ }
You can’t perform that action at this time.
0 commit comments