<p dir="auto">This compiles</p>
<div class="highlight highlight-source-rust notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="fn func(){}

fn main(){
    run(func);
    run(func);
}

fn run&lt;T&gt;(f: T)
where T: Fn() + Copy{
    f();
}"><pre class="notranslate"><span class="pl-k">fn</span> <span class="pl-en">func</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">{</span><span class="pl-kos">}</span>

<span class="pl-k">fn</span> <span class="pl-en">main</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">{</span>
    <span class="pl-en">run</span><span class="pl-kos">(</span>func<span class="pl-kos">)</span><span class="pl-kos">;</span>
    <span class="pl-en">run</span><span class="pl-kos">(</span>func<span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span>

<span class="pl-k">fn</span> <span class="pl-en">run</span><span class="pl-kos">&lt;</span><span class="pl-smi">T</span><span class="pl-kos">&gt;</span><span class="pl-kos">(</span><span class="pl-s1">f</span><span class="pl-kos">:</span> <span class="pl-smi">T</span><span class="pl-kos">)</span>
<span class="pl-k">where</span> <span class="pl-smi">T</span><span class="pl-kos">:</span> <span class="pl-smi">Fn</span><span class="pl-kos">(</span><span class="pl-kos">)</span> + <span class="pl-smi">Copy</span><span class="pl-kos">{</span>
    <span class="pl-en">f</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">but this does not (<a href="http://is.gd/TidLCG" rel="nofollow">playground</a>)</p>
<div class="highlight highlight-source-rust notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="fn func(){}

fn main(){
    run(func);
    run(func);
}

fn run&lt;T&gt;(f: T)
where T: Fn() + Clone{
    f();
}"><pre class="notranslate"><span class="pl-k">fn</span> <span class="pl-en">func</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">{</span><span class="pl-kos">}</span>

<span class="pl-k">fn</span> <span class="pl-en">main</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">{</span>
    <span class="pl-en">run</span><span class="pl-kos">(</span>func<span class="pl-kos">)</span><span class="pl-kos">;</span>
    <span class="pl-en">run</span><span class="pl-kos">(</span>func<span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span>

<span class="pl-k">fn</span> <span class="pl-en">run</span><span class="pl-kos">&lt;</span><span class="pl-smi">T</span><span class="pl-kos">&gt;</span><span class="pl-kos">(</span><span class="pl-s1">f</span><span class="pl-kos">:</span> <span class="pl-smi">T</span><span class="pl-kos">)</span>
<span class="pl-k">where</span> <span class="pl-smi">T</span><span class="pl-kos">:</span> <span class="pl-smi">Fn</span><span class="pl-kos">(</span><span class="pl-kos">)</span> + <span class="pl-smi">Clone</span><span class="pl-kos">{</span>
    <span class="pl-en">f</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span></pre></div>
<p dir="auto">The only difference is the bounds on T. The Copy trait requires that the Clone trait is also implemented, so I believe both of these should compile.</p>
<p dir="auto">Ran into another bug today, unfortunately the compiler doesn’t tell me any more than this:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="error: internal compiler error: unexpected panic
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
thread 'rustc' panicked at 'no entry found for key', /Users/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-mac/build/src/libcore/option.rs:329

stack backtrace:
   1:        0x10ecf3d4c - sys::backtrace::write::ha6579a44c93c5b13weu
   2:        0x10ed17c8f - failure::on_fail::hf4fc7d467c56f479rdB
   3:        0x10ec81bee - rt::unwind::begin_unwind_inner::h1798f590d33010eenVA
   4:        0x10ec822fa - rt::unwind::begin_unwind_fmt::hccfdf16b93d72dd3TTA
   5:        0x10ed1776e - rust_begin_unwind
   6:        0x10ed63f54 - panicking::panic_fmt::ha0a5c3fa6a3e8d87TQv
   7:        0x10ba43fbf - astconv::ast_ty_to_ty::unboxed_closure.30766
   8:        0x10b9de9d6 - astconv::ast_ty_to_ty::h2710260cb7deea76ujt
   9:        0x10ba6cfab - collect::ty_generics::hda890650500761b6lqv
  10:        0x10ba50ee4 - collect::trait_def_of_item::ha27c345daf14c8a6i1u
  11:        0x10ba4fd4f - collect::CollectTraitDefVisitor&lt;'a, 'tcx&gt;.visit..Visitor&lt;'v&gt;::visit_item::h84d53113dbbda134Ldu
  12:        0x10ba4ff7f - collect::CollectTraitDefVisitor&lt;'a, 'tcx&gt;.visit..Visitor&lt;'v&gt;::visit_item::h84d53113dbbda134Ldu
  13:        0x10ba8e82f - check_crate::unboxed_closure.31904
  14:        0x10ba8c971 - check_crate::he5dc8ed100b8048eYMy
  15:        0x10b483c4e - driver::phase_3_run_analysis_passes::h094520913aa775afVFa
  16:        0x10b46ac36 - driver::compile_input::h385f7696c25beae6Bba
  17:        0x10b529826 - run_compiler::he16877a561eaef1dR8b
  18:        0x10b526b73 - thunk::F.Invoke&lt;A, R&gt;::invoke::h6774480594258817770
  19:        0x10b5259d8 - rt::unwind::try::try_fn::h5509419198239539026
  20:        0x10ed8d3a9 - rust_try_inner
  21:        0x10ed8d396 - rust_try
  22:        0x10b526016 - thunk::F.Invoke&lt;A, R&gt;::invoke::h1573488770652611368
  23:        0x10ed03611 - sys::thread::thread_start::h4a3cbd9668f8d1c3K6w
  24:     0x7fff88ea52fc - _pthread_body
  25:     0x7fff88ea5279 - _pthread_body"><pre class="notranslate"><code class="notranslate">error: internal compiler error: unexpected panic
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: http://doc.rust-lang.org/complement-bugreport.html
note: run with `RUST_BACKTRACE=1` for a backtrace
thread 'rustc' panicked at 'no entry found for key', /Users/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-mac/build/src/libcore/option.rs:329

stack backtrace:
   1:        0x10ecf3d4c - sys::backtrace::write::ha6579a44c93c5b13weu
   2:        0x10ed17c8f - failure::on_fail::hf4fc7d467c56f479rdB
   3:        0x10ec81bee - rt::unwind::begin_unwind_inner::h1798f590d33010eenVA
   4:        0x10ec822fa - rt::unwind::begin_unwind_fmt::hccfdf16b93d72dd3TTA
   5:        0x10ed1776e - rust_begin_unwind
   6:        0x10ed63f54 - panicking::panic_fmt::ha0a5c3fa6a3e8d87TQv
   7:        0x10ba43fbf - astconv::ast_ty_to_ty::unboxed_closure.30766
   8:        0x10b9de9d6 - astconv::ast_ty_to_ty::h2710260cb7deea76ujt
   9:        0x10ba6cfab - collect::ty_generics::hda890650500761b6lqv
  10:        0x10ba50ee4 - collect::trait_def_of_item::ha27c345daf14c8a6i1u
  11:        0x10ba4fd4f - collect::CollectTraitDefVisitor&lt;'a, 'tcx&gt;.visit..Visitor&lt;'v&gt;::visit_item::h84d53113dbbda134Ldu
  12:        0x10ba4ff7f - collect::CollectTraitDefVisitor&lt;'a, 'tcx&gt;.visit..Visitor&lt;'v&gt;::visit_item::h84d53113dbbda134Ldu
  13:        0x10ba8e82f - check_crate::unboxed_closure.31904
  14:        0x10ba8c971 - check_crate::he5dc8ed100b8048eYMy
  15:        0x10b483c4e - driver::phase_3_run_analysis_passes::h094520913aa775afVFa
  16:        0x10b46ac36 - driver::compile_input::h385f7696c25beae6Bba
  17:        0x10b529826 - run_compiler::he16877a561eaef1dR8b
  18:        0x10b526b73 - thunk::F.Invoke&lt;A, R&gt;::invoke::h6774480594258817770
  19:        0x10b5259d8 - rt::unwind::try::try_fn::h5509419198239539026
  20:        0x10ed8d3a9 - rust_try_inner
  21:        0x10ed8d396 - rust_try
  22:        0x10b526016 - thunk::F.Invoke&lt;A, R&gt;::invoke::h1573488770652611368
  23:        0x10ed03611 - sys::thread::thread_start::h4a3cbd9668f8d1c3K6w
  24:     0x7fff88ea52fc - _pthread_body
  25:     0x7fff88ea5279 - _pthread_body
</code></pre></div>
<p dir="auto">I managed to reproduce the issue with this snippet: <a href="http://is.gd/yUKE00" rel="nofollow">http://is.gd/yUKE00</a></p>
<p dir="auto">This is the output from <code class="notranslate">rustc --verbose --version</code>:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="rustc 1.0.0-nightly (4e4e8cff1 2015-01-24 22:14:14 +0000)
binary: rustc
commit-hash: 4e4e8cff1697ec79bcd0a1e45e63fb2f54a7ea28
commit-date: 2015-01-24 22:14:14 +0000
host: x86_64-apple-darwin
release: 1.0.0-nightly"><pre class="notranslate"><code class="notranslate">rustc 1.0.0-nightly (4e4e8cff1 2015-01-24 22:14:14 +0000)
binary: rustc
commit-hash: 4e4e8cff1697ec79bcd0a1e45e63fb2f54a7ea28
commit-date: 2015-01-24 22:14:14 +0000
host: x86_64-apple-darwin
release: 1.0.0-nightly
</code></pre></div>