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 라이브러리 (1, 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
에 대한 포인터로 이것을 읽고있다. Custer를 Rust에서 구현하지 않는다면 단순히 포인터가 타입 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'에 대해 알고있었습니다 : p. 어쨌든 새로운 전용 유형이 더 좋을 것입니다. 항상 좋은 대답입니다. – mcarton