in fatal/string/rope.h [1481:1506]
const_iterator find(char c, const_iterator offset) const {
if (offset == cend()) {
return offset;
}
auto const pieces = pieces_.size();
auto piece_offset = offset.offset();
for (auto i = offset.index(); i < pieces; ++i, piece_offset = 0) {
auto const &piece = pieces_[i];
auto const ref = piece.ref();
auto const j = std::find(
std::next(ref.begin(), static_cast<difference_type>(piece_offset)),
ref.end(),
c
);
if (j != ref.end()) {
assert(i < pieces);
auto const off = static_cast<size_type>(std::distance(ref.begin(), j));
return const_iterator(this, std::addressof(pieces_[i]), i, off);
}
};
return cend();
}