explicit MapString(const MapString& rval)
     : alloc(rval.alloc ? new std::string(*rval.alloc) : NULL),
       str(alloc ? alloc->data() : rval.data(), rval.length()) {
 }
 size_t operator()(const MapString& __t) const noexcept {
   if (!__t.length()) return 0;
   return std::hash<std::string_view>()(std::string_view(__t));
 }
 bool operator==(const MapString& rval) const {
   if (length() != rval.length()) return false;
   if (length() == 0) return true;
   return fastcmp<strncmp>(data(), rval.data(), length()) == 0;
 }