Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #![allow(non_camel_case_types)]
- use std::ffi::CStr;
- use std::ptr;
- use std::os::raw::c_void;
- use std::mem;
- fn check_error(e: *const u8) {
- if e.is_null() {
- println!("Not an error!");
- return;
- } else {
- unsafe {
- println!("{}", CStr::from_ptr(e as *const i8).to_str().unwrap());
- }
- }
- }
- struct rs2_error {
- #[allow(dead_code)]
- unused: [u8; 8],
- }
- fn rs2_create_context(error: *mut rs2_error) {
- unsafe {
- std::ptr::write(error, mem::transmute("my_error".as_ptr()));
- }
- }
- fn main() {
- let error: *mut u8 = ptr::null_mut();
- rs2_create_context(error as *mut rs2_error);
- check_error(error as *mut u8);
- }
Add Comment
Please, Sign In to add comment