鑑於this definition in the ncurses-rs crate:爲什麼* mut i8用於ncurses-rs中的WINDOW類型?
pub type WINDOW = *mut i8;
pub fn newwin(_:c_int,_:c_int,_:c_int,_:c_int) -> WINDOW;
// 1:
typedef struct _win_st WINDOW;
// 2:
struct _win_st {
/* lots of fields... */
};
// 3:
(WINDOW *) newwin (int,int,int,int);
爲什麼類型的WINDOW
*mut i8
?
我正在讀作爲指向C char
的指針,這顯然是不正確的。如果你沒有在Rust中實現C結構,簡單地說一個指針的類型是i8
是否是最佳實踐?根本不管它是什麼類型?
我想這是模仿'void *'(Rust沒有的),因爲'WINDOW'的內容永遠不重要,'WINDOW''總是通過指針操縱。 – mcarton
@mcarton你的意思就像'c_void'類型[在相同的源文件中稍高一點](https://github.com/jeaye/ncurses-rs/blob/59fbbc6456dcd87d29a7761576723dab0c08986b/src/ll.rs# L14)?^_^ – Shepmaster
@Shepmaster所以它看起來像我不像作者知道'c_void':p。無論如何,它最好是一個新的專用類型。一如既往的好回答。 – mcarton