#pragma once #include "Utils.hpp" #include #include #include struct Uid { uint64_t upper = 0; uint64_t lower = 0; static Uid Create(); bool IsNull() const; void Read(const rapidjson::Value& value); void WriteInto(rapidjson::Value& value, rapidjson::Document& root); rapidjson::Value Write(rapidjson::Document& root); auto operator<=>(const Uid&) const = default; }; template <> struct std::hash { size_t operator()(const Uid& uid) const { size_t hash = 0; Utils::HashCombine(hash, uid.upper); Utils::HashCombine(hash, uid.lower); return hash; } };