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}