Why does rust use struct keyword?

For sure it was not incidental. But I do think the implicit head was a mistake in hindsight. It is creating problems for HKTs designs and modelling nullary type classes (sure, the latter is a ridiculously obscure concept that more or less no one uses in Haskell).

I don't doubt that traits were framed in OO terms, but to say that the goal of traits were to serve as mixins does not necessarily follow from that. As an aside, in Haskell, type class functions are referred to as methods, so there is not much difference here.

I don't doubt that design decisions were made in every step of the way - I expect as much, given the different memory model of Rust; but to me, the end result became Haskell type classes with some minor differences (dot syntax, implicit head, object safety, specific rules around coherence).