diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2020-07-01 07:42:42 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-01 07:42:42 -0700 |
| commit | 6556f269918124b43db67367867c6930cb3189c9 (patch) | |
| tree | 8233907da0a14d05eadcfab203ed663548888a6c /src/test/codegen/src-hash-algorithm/src-hash-algorithm-md5.rs | |
| parent | 0eb9799695db2920e7cdebf7a8a8a9772365d4d1 (diff) | |
| parent | 0c88dd663a7095ccc405a2036047a90981137a51 (diff) | |
| download | rust-6556f269918124b43db67367867c6930cb3189c9.tar.gz rust-6556f269918124b43db67367867c6930cb3189c9.zip | |
Rollup merge of #73678 - Keno:patch-1, r=LukasKalbertodt
Update Box::from_raw example to generalize better
I know very little about rust, so I saw the example here
```
use std::alloc::{alloc, Layout};
unsafe {
let ptr = alloc(Layout::new::<i32>()) as *mut i32;
*ptr = 5;
let x = Box::from_raw(ptr);
}
```
and tried to generalize it by writing,
```
let layout = Layout::new::<T>();
let new_obj = unsafe {
let ptr = alloc(layout) as *mut T;
*ptr = obj;
Box::from_raw(ptr)
};
```
for some more complicated `T`, which ended up crashing with SIGSEGV,
because it tried to `drop_in_place` the previous object in `ptr` which is
of course garbage. I think that changing this example to use `.write` instead
would be a good idea to suggest the correct generalization. It is also more
consistent with other documentation items in this file, which use `.write`.
I also added a comment to explain it, but I'm not too attached to that,
and can see it being too verbose in this place.
Diffstat (limited to 'src/test/codegen/src-hash-algorithm/src-hash-algorithm-md5.rs')
0 files changed, 0 insertions, 0 deletions
