title: Should trait bounds be duplicated in struct and impl?
body: <p>The following code uses a struct with generic type. While its implementation is only valid for the given trait bound, the struct can be defined with or without the same bound. The struct's fields are private so no other code could create an instance anyway.</p>
  <pre><code>trait Trait {
      fn foo(&amp;self);
  }
  
  struct Object&lt;T: Trait&gt; {
      value: T,
  }
  
  impl&lt;T: Trait&gt; Object&lt;T&gt; {
      fn bar(object: Object&lt;T&gt;) {
          object.value.foo();
      }
  }
  </code></pre>
  <p>Should the trait bound for the structure should be omitted to conform to the DRY principle, or should it be given to clarify the dependency? Or are there circumstances one solution should be preferred over the other?</p>