defprotocol Thoth.Model do def id(model) end defimpl Thoth.Model, for: Any do use Bitwise def id(_) do <> <> <> <> <> <> <> <> <> = :crypto.rand_bytes(16) seg_a = <> |> Base.encode16 |> String.downcase seg_b = <> |> Base.encode16 |> String.downcase c1 = c1 &&& 0x4f ||| 0x40 seg_c = <> |> Base.encode16 |> String.downcase d1 = d1 &&& 0xbf ||| 0x80 seg_d = <> |> Base.encode16 |> String.downcase seg_e = <> |> Base.encode16 |> String.downcase seg_a <> "-" <> seg_b <> "-" <> seg_c <> "-" <> seg_d <> "-" <> seg_e end end