As it is shown, the code compiles because Type.f() is defined as an inherent method of the Type struct. This takes precedence over any traits that may or may not be defined and in scope.
If you want to force the usage of the trait method, you can do this:
// the rest is the same as earlier
fn main() {
// Create a `Type` instance, borrow it, and then use it as a trait object:
let trait_obj: &F = &Type as &F;
println!("{}", trait_obj.f()); // false
}