Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
c_str: add
.as_ptr
& .as_mut_ptr
to replace .with_[mut_]ref
.
These forms return the pointer directly, rather than the added indirection, indentation, and inefficiencies of the closures in `.with_ref` and `.with_mut_ref`. The two closure functions are deprecated. Replace foo(c_str.with_ref(|p| p)) c_str.with_ref(|p| { foo(p); bar(p); }) with foo(c_str.as_ptr()) let p = c_str.as_ptr(); foo(p); bar(p); This change does mean that one has to be careful to avoid writing `let p = x.to_c_str().as_ptr();` since the `CString` will be freed at the end of the statement. Previously, `with_ref` was used (and `as_ptr` avoided) for this reason, but Rust has strongly moved away from closures to more RAII-style code, and most uses of `.with_ref` where in the form `.with_ref(|p| p)` anyway, that is, they were exactly `.as_ptr`. [breaking-change]
- Loading branch information