Arrr, me hearty! Ye be askin’ for a simple piece o’ code in Rust, peppered with pirate comments. Here be a wee program that prints a hearty greeting:

fn main() {
    // Avast, me hearties! We start our voyage here.
    let greeting = "Ahoy, matey! Welcome aboard!";

    // Yo ho ho! We print our greeting to the open sea!
  println!("{}", greeting);
}

Now ye be havin’ a taste o’ pirate-infused Rust code! If ye be havin’ any more requests or need further assistance, feel free to speak up, and I’ll be at yer service!

You are viewing a single thread.
View all comments
16 points

When I compiled that program, the executable was around 10MB. I wrote the same program in C, and the executable was 15kB. That’s about 3 orders of magnitude difference. Is Rust really 1000 times better than C? :-)

permalink
report
reply
19 points
*

Rust turns a lot of safety things ‘on’ by default.
Turning all of that off for a tiny program that doesn’t need it such as hello world results in a comparable size.

This is a good talk on rust
https://youtu.be/VlSkZYBeK8Q

And this one goes over size reduction
https://youtu.be/b2qe3L4BX-Y

permalink
report
parent
reply
6 points

Thanks for the resources. I’m old school, and so far haven’t really looked into Rust; I look forward to watching the talk you linked to.

permalink
report
parent
reply
1 point

this is not due to safety but rather std. Set opt level to 3 and enable fat lto

permalink
report
parent
reply
17 points

The standard lib is statically linked, so there will be a higher baseline binary size. This means that yes, a hello world project may be 10mb unstripped but a considerably more complicated project could in turn be 11mb unstripped. Aka it doesn’t matter much in practice.

permalink
report
parent
reply
16 points

I wrote it in C and compiled it for an ATtiny13 and it was 162 bytes. That includes the code to initialize the microcontroller and a bit banged transmit only UART to actually output the text.

permalink
report
parent
reply
9 points

just goes to show: size is relative :-)

permalink
report
parent
reply
8 points
*

Enable LTO, abort on panic, and a higher optimization level and it’ll drop that a ton

permalink
report
parent
reply
1 point

set opt level to 3 and enable fat lto.
even without fat lto enabled, my entire multithreaded voxel engine with multithreaded procedural world generation, procedural structures and multiplayer is 5mb in size.

permalink
report
parent
reply

Programmer Humor

!programmerhumor@lemmy.ml

Create post

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

  • Posts must be relevant to programming, programmers, or computer science.
  • No NSFW content.
  • Jokes must be in good taste. No hate speech, bigotry, etc.

Community stats

  • 5.1K

    Monthly active users

  • 1.5K

    Posts

  • 33K

    Comments