39 constexpr static size_t kLength = 16;
41 explicit Uuid(std::array<uint8_t, kLength> data);
44 static Uuid GenerateV4();
47 static Uuid GenerateV7();
57 static Uuid GenerateV7(uint64_t unix_ts_ms);
60 static Result<Uuid> FromString(std::string_view str);
63 static Result<Uuid> FromBytes(std::span<const uint8_t> bytes);
66 std::span<const uint8_t>
bytes()
const {
return data_; }
72 uint8_t operator[](
size_t index)
const;
75 std::string ToString()
const override;
77 friend bool operator==(
const Uuid& lhs,
const Uuid& rhs) {
78 return lhs.data_ == rhs.data_;
81 int64_t high_bits()
const;
82 int64_t low_bits()
const;
85 std::array<uint8_t, kLength> data_;