char_pointer_to_string

Function char_pointer_to_string 

Source
pub fn char_pointer_to_string(ptr: *mut i8) -> Result<String, FromUtf8Error>
Examples found in repository?
examples/multithread.rs (line 26)
16fn main() {
17    print_s7_version();
18
19    let mut threads = Vec::new();
20    let lock = Arc::new(Mutex::new(0));
21    for i in 0..NUM_THREADS {
22        let sc = unsafe { s7_init() as usize };
23        let lock = lock.clone();
24        threads.push(thread::spawn(move || unsafe {
25            let sc = sc as *mut s7_scheme;
26            let str = char_pointer_to_string(s7_object_to_c_string(sc, s7_make_integer(sc, 123)))
27                .unwrap();
28
29            let src = "(let () \
30                                   (define (f) \
31                                     (do ((i 0 (+ i 1))) ((= i 10)) \
32                                       (do ((k 0 (+ k 1))) ((= k 1000000))) \
33                                       (format *stderr* \"~D \" i))) \
34                                   (f) \
35                                   (format *stderr* \"~%\")))";
36            s7_eval_c_string(sc, src.as_ptr() as *const c_char);
37
38            let _guard = lock.lock().unwrap();
39            eprintln!("thread {}: {}", i, str);
40        }));
41    }
42
43    for t in threads {
44        t.join().unwrap();
45    }
46}