mirror of
https://github.com/rust-lang/rust.git
synced 2024-10-31 22:41:50 +00:00
20 lines
604 B
Rust
20 lines
604 B
Rust
use std::borrow::Cow::{Borrowed, Owned};
|
|
use std::ffi::CStr;
|
|
use std::os::raw::c_char;
|
|
|
|
#[test]
|
|
fn to_str() {
|
|
let data = b"123\xE2\x80\xA6\0";
|
|
let ptr = data.as_ptr() as *const c_char;
|
|
unsafe {
|
|
assert_eq!(CStr::from_ptr(ptr).to_str(), Ok("123…"));
|
|
assert_eq!(CStr::from_ptr(ptr).to_string_lossy(), Borrowed("123…"));
|
|
}
|
|
let data = b"123\xE2\0";
|
|
let ptr = data.as_ptr() as *const c_char;
|
|
unsafe {
|
|
assert!(CStr::from_ptr(ptr).to_str().is_err());
|
|
assert_eq!(CStr::from_ptr(ptr).to_string_lossy(), Owned::<str>(format!("123\u{FFFD}")));
|
|
}
|
|
}
|