title: Provide default trait implementation based on trait type parameter
body: <p>Given this trait:</p>
  
  <pre><code>use std::io::{self, Read};
  use std::fs::File;
  
  pub trait Asset&lt;D&gt; {
      fn load_data(path: &amp;str) -&gt; io::Result&lt;D&gt;
      where
          D: From&lt;Vec&lt;u8&gt;&gt;
      {
          let file = File::open(path)?;
          let bytes_result: io::Result&lt;Vec&lt;u8&gt;&gt; = file.bytes().collect();
  
          Ok(D::from(bytes_result?))
      }
  
      // many more methods...
  }
  </code></pre>
  
  <p>the <code>load_data</code> method is only available when <code>D</code> implements <code>From&lt;Vec&lt;u8&gt;&gt;</code>, which makes sense. However, I would like every type implementing <code>Asset&lt;D&gt;</code> to have <code>load_data</code>, where if <code>D</code> implements <code>From&lt;Vec&lt;u8&gt;&gt;</code>, then it uses the default implementation. Otherwise, the type would have to implement <code>load_data</code> itself.</p>