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;
及び実装のncursesのCライブラリ(3210、2、3):なぜタイプは
// 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
であると言うのがベストプラクティスですか?それはどんなタイプであっても問題ではありませんか?
'WINDOW'の内容は決して重要ではなく、' WINDOW'は常にポインタで操作されるので、これは 'void *'(Rustにはありません)と似ていると思います。 – mcarton
@mcartonあなたは、 ''同じソースファイルのちょっと高いところにある 'c_void'のようなものです(https://github.com/jeaye/ncurses-rs/blob/59fbbc6456dcd87d29a7761576723dab0c08986b/src/ll.rs# L14)?^_^ – Shepmaster
@Shepmaster私とは違って見えるので、作者は 'c_void'について知っていました。とにかく新しい専用のタイプにするのが良いでしょう。ニースの答えは、いつものように。 – mcarton