I don't think there is any reason to keep the container more generic
than its (only) implementation -- the constraints are necessary for this
container to work at all.

Defining the constraints on the type itself also enables use
of #[derive(Debug)].