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;
32 using reference =
const value_type&;
33 using pointer =
const value_type*;
35 explicit Iterator(
Cursor*);
39 explicit DocHolder(value_type doc) : doc_(std::move(doc)) {}
41 value_type& operator*() {
return doc_; }
48 reference operator*()
const;
49 pointer operator->()
const;
51 bool operator==(
const Iterator&)
const;
52 bool operator!=(
const Iterator&)
const;
59 explicit operator
bool()
const {
return HasMore(); }
65 std::unique_ptr<impl::CursorImpl> impl_;