9#include <userver/formats/bson/document.hpp>
11USERVER_NAMESPACE_BEGIN
13namespace storages::mongo {
21 explicit Cursor(std::unique_ptr<impl::CursorImpl>&&);
29 using iterator_category = std::input_iterator_tag;
30 using difference_type = ptrdiff_t;
32 using reference =
const value_type&;
33 using pointer =
const value_type*;
35 explicit Iterator() =
default;
36 explicit Iterator(
Cursor*);
40 explicit DocHolder(value_type doc) : doc_(std::move(doc)) {}
42 value_type& operator*() {
return doc_; }
49 reference operator*()
const;
50 pointer operator->()
const;
52 bool operator==(
const Iterator&)
const;
53 bool operator!=(
const Iterator&)
const;
60 explicit operator
bool()
const {
return HasMore(); }
72 std::unique_ptr<impl::CursorImpl> impl_;