[rust-dev] Compile-time function evaluation in Rust

Gábor Lehel glaebhoerl at gmail.com
Wed Jan 29 02:39:50 PST 2014


Ah, so `fail!()` is not okay, but `loop { }` is okay.


On Wed, Jan 29, 2014 at 11:26 AM, Pierre Talbot <ptalbot at hyc.io> wrote:

> It's a diverging function in the sense of the manual:
> http://static.rust-lang.org/doc/master/rust.html#diverging-functions
>
> On 01/29/2014 11:21 AM, Gábor Lehel wrote:
>
>> On Wed, Jan 29, 2014 at 10:19 AM, Pierre Talbot <ptalbot at hyc.io <mailto:
>> ptalbot at hyc.io>> wrote:
>>
>>     I add: a pure function can call extern code and diverges, so the
>>     pure requirements are a subset of the CTFE requirements.
>>
>>
>> How do you plan to enforce that a function won't diverge?
>>
>> Are there any systems which allow calling functions and enforce
>> convergence without using dependent types?
>>
>> (We could probably enforce it by prohibiting both mutual and
>> self-recursion as well as loops, but I'm guessing this would be too
>> restrictive to be acceptable.)
>>
>>
>>     Pierre
>>
>>     _______________________________________________
>>     Rust-dev mailing list
>>     Rust-dev at mozilla.org <mailto:Rust-dev at mozilla.org>
>>     https://mail.mozilla.org/listinfo/rust-dev
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/rust-dev/attachments/20140129/1417449f/attachment.html>


More information about the Rust-dev mailing list