1. struct Foo<T: ?Sized> {
    2. f: T,
    3. }

    This ?Sized, read as “T may or may not be Sized”, which allows us to match both sized and unsized types