2041 shaares
6 private links
6 private links
If you use a relational database, you are almost certainly underusing constraints. This post is a checklist of useful database constraints you should consider when designing a schema.
export DEBUGINFOD_URLS="https://debuginfod.debian.net"
struct Id<T> {
inner: u64,
_marker: std::marker::PhantomData<T>,
}
impl<T> Id<T> {
pub fn new(inner: u64) -> Self {
Self {
inner,
_marker: std::marker::PhantomData
}
}
}
struct UserIdMarker;
struct GroupIdMarker;
pub type UserId = Id<UserIdMarker>;
pub type GroupId = Id<GroupIdMarker>;
//...
fn ping_user(id: UserId) {
//...
}
ping_user(GroupId::new(12345)); // This triggers an error