<p dir="auto">(using Rust compiled from commit <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/rust-lang/rust/commit/dc4560dc26498573516d833cb2333b54071070e3/hovercard" href="https://github.com/rust-lang/rust/commit/dc4560dc26498573516d833cb2333b54071070e3"><tt>dc4560d</tt></a>)</p>
<p dir="auto">The following code fails to compile:</p>
<div class="highlight highlight-source-rust notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="fn main() {
    'outer: loop {
        match () {
            () =&gt; {
                for std::uint::iterate(0, 8) |_| {
                    loop {
                        break 'outer;
                    }
                }
            },
        }
    }
}"><pre class="notranslate"><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-c1">'</span>outer<span class="pl-kos">:</span> <span class="pl-k">loop</span> <span class="pl-kos">{</span>
        <span class="pl-k">match</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
            <span class="pl-kos">(</span><span class="pl-kos">)</span> =&gt; <span class="pl-kos">{</span>
                <span class="pl-k">for</span> std<span class="pl-kos">::</span>uint<span class="pl-kos">::</span>iterate<span class="pl-kos">(</span><span class="pl-c1">0</span><span class="pl-kos">,</span> <span class="pl-c1">8</span><span class="pl-kos">)</span> |_| <span class="pl-kos">{</span>
                    <span class="pl-k">loop</span> <span class="pl-kos">{</span>
                        <span class="pl-k">break</span> <span class="pl-c1">'</span>outer<span class="pl-kos">;</span>
                    <span class="pl-kos">}</span>
                <span class="pl-kos">}</span>
            <span class="pl-kos">}</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">with the following error:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="/tmp/test.rs:7:24: 7:37 error: internal compiler error: Break to unknown label   
/tmp/test.rs:7                         break 'outer;
                                             ^~~~~~~~~~~~~"><pre class="notranslate"><code class="notranslate">/tmp/test.rs:7:24: 7:37 error: internal compiler error: Break to unknown label   
/tmp/test.rs:7                         break 'outer;
                                             ^~~~~~~~~~~~~
</code></pre></div>
<p dir="auto">If you comment out the <code class="notranslate">for</code> loop, it compiles fine.</p>
<p dir="auto">Rust should expose the full standard C99 math library through the <code class="notranslate">Float</code> trait. The <code class="notranslate">cmath</code> module will then be an implementation detail we don't need to expose. This will allow Rust to move to a specific math library in the future too rather than using the standard C library provided by the OS.</p>
<p dir="auto">At the moment, a macro is used to generate a whole bunch of wrappers around these functions. This actually makes the code <em>longer</em>, rather than shorter, so I don't see a point in keeping it around.</p>