11#include <fmt/format.h>
13#include <userver/formats/serialize/to.hpp>
15USERVER_NAMESPACE_BEGIN
27 zstring_view() =
delete;
30 constexpr zstring_view(
const char* str)
noexcept : std::string_view{str} {
34 zstring_view(
const std::string& str)
noexcept : std::string_view{str} {}
39 void remove_suffix(std::size_t) =
delete;
40 void swap(std::string_view&) =
delete;
41 void swap(
zstring_view& other)
noexcept { std::string_view::swap(other); }
43 constexpr const char* c_str()
const noexcept {
return std::string_view::data(); }
52 constexpr zstring_view(
const char* str, std::size_t len)
noexcept : std::string_view{str, len} {
54 if (!str || str[len] != 0) {
63 return typename Value::Builder(std::string_view{view}).ExtractValue();
71struct fmt::formatter<USERVER_NAMESPACE::utils::
zstring_view,
char> : fmt::formatter<std::string_view> {};
76template <
class... NotUsed>
77inline auto runtime(USERVER_NAMESPACE::utils::
zstring_view s, NotUsed...)
78 ->
decltype(fmt::runtime(std::string_view{s})) {
79 static_assert(
sizeof...(NotUsed) == 0);
80 return fmt::runtime(std::string_view{s});