
Announcing Rust 1.15.1 - steveklabnik
https://blog.rust-lang.org/2017/02/09/Rust-1.15.1.html
======
steveklabnik
A Rustacean with a wry sense of humor suggested that now would be a good time
to pitch the Underhanded Rust Contest
[https://underhanded.rs/blog/2016/12/15/underhanded-
rust.en-U...](https://underhanded.rs/blog/2016/12/15/underhanded-rust.en-
US.html)

------
brinker
Glad that the soundness bug was caught so quickly, and that the new version
has been put out so quickly. Thanks Rust team!

------
saintfiends
I'm new to rust. Can someone explain what is the issue with following code?

    
    
        pub fn as_mut_slice(&self) -> &mut [T] {
            unsafe {
                slice::from_raw_parts_mut(self.ptr as *mut T, self.len())
            }
        }

~~~
steveklabnik
The post goes on to explain it, was there something specific about that that's
confusing?

~~~
saintfiends
My confusion was why the compiler didn't catch this, it is suppose to spot
this sort of thing right?

Now that I think about it, maybe it has to do with `unsafe` block so the
compiler doesn't check it.

My next question would be why does it need `unsafe`?

~~~
steveklabnik
Ah yes, it's because of the `unsafe`.

> why does it need `unsafe`?

slice::from_raw_parts_mut is an unsafe function because it lets you conjure a
slice from thin air; there's no checking of it at all.

This function is used because it's the most straightforward way of
accomplishing the task.

------
baq
Quick and responsible, good job.

