distinct type aliasing
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
UserID :: distinct u32
|
||||
|
||||
make :: func(value u32) UserID {
|
||||
return UserID(value)
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
ids :: import "./ids"
|
||||
|
||||
Point :: struct {
|
||||
x i32
|
||||
y i32
|
||||
}
|
||||
|
||||
LocalID :: distinct u32
|
||||
PointID :: distinct Point
|
||||
Bytes :: distinct [2]u8
|
||||
WrappedID :: distinct LocalID
|
||||
|
||||
static_id LocalID :: LocalID(42)
|
||||
|
||||
take :: func(value LocalID) LocalID {
|
||||
return value
|
||||
}
|
||||
|
||||
main :: func() i32 {
|
||||
id LocalID :: LocalID(7)
|
||||
copy LocalID = take(id)
|
||||
maybe ?LocalID = copy
|
||||
pointer @LocalID = ©
|
||||
point PointID :: PointID(Point { x = 1, y = 2 })
|
||||
bytes Bytes :: Bytes([3, 4])
|
||||
wrapped WrappedID :: WrappedID(id)
|
||||
remote ids.UserID :: ids.UserID(8)
|
||||
remote_copy ids.UserID :: ids.make(9)
|
||||
_ = static_id
|
||||
_ = maybe
|
||||
_ = pointer
|
||||
_ = point
|
||||
_ = bytes
|
||||
_ = wrapped
|
||||
_ = remote
|
||||
_ = remote_copy
|
||||
return 0
|
||||
}
|
||||
Reference in New Issue
Block a user