[1]: https://doc.rust-lang.org/reference/items/traits.html#r-item...
The one additional piece of information you need is that in Go, all interfaces are supposed to be trait objects. The exception are union-elements, but that's really a restriction the Go team is trying to remove, not a model to base more features on.
This aspect is what prevents you from statically knowing which interface-implementations you need to generate for a specific concrete type. There could always be new ones added at runtime.
Structural typing is the term typically used to describe "static duck typing".
But who is to say that dynamic evaluation isn't the special case?
Did you?