On 8/10/2012 5:32 AM, bearophile wrote:
Through Reddit I've found a page that shows a small example of Rust code:

Here's the D version:
-----------------------------------------
import std.stdio;

struct expr {
    int val;
    int eval() { return val; }
}

expr plus (expr a, expr b) { return expr(a.val + b.val); }
expr minus(expr a, expr b) { return expr(a.val - b.val); }

void main() {
    auto x = minus(expr(5), plus(expr(3), expr(1))).eval();
    writeln("val: ", x);
}
------------------------------------------

And the generated code:

------------------------------------------
__Dmain comdat
        assume  CS:__Dmain
L0:             push    EAX
                mov     EAX,offset FLAT:_D3std5stdio6stdoutS3std5stdio4File
                push    dword ptr FLAT:_DATA[0Ch]
                push    dword ptr FLAT:_DATA[08h]
                push    1
                push    0Ah
call near ptr _D3std5stdio4File18__T5writeTAyaTiTaZ5writeMFAyaiaZv
                xor     EAX,EAX
                pop     ECX
                ret
----------------------------------------

I'd say we're doing all right.

Reply via email to