How easy is it to deal with raw memory in rust? That's the main reason for using C in my opinion.
let foo = unsafe { std::slice::from_raw_parts_mut(0xdeadbeef as *mut u8, 42) };
That gets you a slice (pointer+length that can be used as an array) that points to 0xdeadbeef. Bit more verbose than the c equivalent char* foo = 0xdeadbeef;
but arguably this is pretty rare usecase even for handling raw memory> But allocating memory seemed like a fun exercise. To allocate something on the heap in Rust, you can do
> let a = ~2
> This creates a pointer to a 2 on the heap.
> let a = Box::new(2);
I believe it's an unstable feature currently to use the "box" keyword to heap-allocate a value, which can also be used in pattern matching. I saw somewhere that "box" will be made into an overloadable operator, such that you can easily create reference-counted and atomically reference-counted types.
And this is the active, in-final-comment-period one which modifies it: https://github.com/rust-lang/rfcs/pull/1228