diff --git a/AK/Span.h b/AK/Span.h index a80502eac1..5216453275 100644 --- a/AK/Span.h +++ b/AK/Span.h @@ -227,6 +227,18 @@ public: return TypedTransfer::compare(data(), other.data(), other.size()); } + [[nodiscard]] size_t constexpr matching_prefix_length(ReadonlySpan other) const + { + auto maximum_length = min(size(), other.size()); + + for (size_t i = 0; i < maximum_length; i++) { + if (data()[i] != other.data()[i]) + return i; + } + + return maximum_length; + } + [[nodiscard]] ALWAYS_INLINE constexpr T const& at(size_t index) const { VERIFY(index < this->m_size);