Nessuna descrizione

main.rs 1.2KB

    #![feature(libc)] extern crate libc; #[link(name = "m")] extern { fn cos(d: f64) -> f64; } #[repr(C)] struct png_image { opaque: *mut libc::c_void, version: libc::uint32_t, width: libc::uint32_t, height: libc::uint32_t, format: libc::uint32_t, flags: libc::uint32_t, colormap_entries: libc::uint32_t, warning_or_error: libc::uint32_t, message: [u8; 64], } #[link(name = "png")] extern { fn png_image_begin_read_from_file(img: *mut png_image, file_name: *const u8) -> libc::c_int; } fn main() { let x = unsafe { cos(3.1415) }; println!("cos(3.1415) = {}", x); fn get_message(msg: [u8; 64]) -> String { let mut vec = Vec::new(); for i in 0..64 { vec.push(msg[i]); } String::from_utf8(vec).unwrap() } fn print_img(img: &png_image) { println!("{}x{} {} {} {} {} {} {}", img.width, img.height, img.version, img.format, img.flags, img.colormap_entries, img.warning_or_error, get_message(img.message)) } unsafe { let mut img: png_image = std::mem::zeroed(); print_img(&img); let res = png_image_begin_read_from_file(&mut img, "mei.png\0".as_ptr()); println!("read_from_file: {}", res); print_img(&img); } }