this post was submitted on 20 Nov 2025
38 points (100.0% liked)

Rust

7507 readers
19 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

!performance@programming.dev

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 2 years ago
MODERATORS
top 6 comments
sorted by: hot top controversial new old
[–] INeedMana@piefed.zip 1 points 2 days ago (2 children)

It would be cool if there was an option to tell compiler how to name the object in the end. A strength of C mangling (or rather lack of it) is that you can take the object file and know beforehand the names. With mangling that will always depend on the version of the compiler. In practice, while mangled names are kind of stable, mangled C++ names are not really reliable in the real world

If we could tell the compiler "in the end name/alias this function as prefix_or_name_of_cargo_my_super_duper_function", we could then easily call it in an assembler/pure C/etc
It could even be a separate wrapper. only for exposing stable function names in the object files

[–] TehPers@beehaw.org 2 points 2 days ago (1 children)
#[unsafe(export_name = "my_super_duper_function")]
pub fn foo() {}

I would recommend reading up some materials on FFI in Rust if you're interested. Calling functions in Rust from C and in C from Rust (or even languages other than C) is both extremely common and a primary usecase of the language.

[–] INeedMana@piefed.zip 1 points 2 days ago (1 children)

Wouldn't that make the body of the function unsafe too?

I would recommend reading up some materials on FFI in Rust

Yeah, I'm slowly getting to that

[–] TehPers@beehaw.org 2 points 2 days ago

No, the attribute is unsafe. An unsafe function is marked unsafe fn.

Also, unsafe by itself just means there are invariants that must me manually upheld to avoid unsound behavior. If those invariants are upheld, then it doesn't matter if it's unsafe.

[–] savvywolf@pawb.social 2 points 2 days ago (1 children)
[–] INeedMana@piefed.zip 2 points 2 days ago

Those are good to know, thanks. But as far as I understand, attribute enforces unsafe, repr is more about the data layout. Right?

But in there, I've found https://github.com/mozilla/cbindgen. Wicked