일부 libc 함수. sigemptyset(set: *mut sigset_t)
변수에 대한 포인터를 가져 와서 초기화되지 않은 것으로 간주하고 초기화합니다.초기화되지 않은 변수를 선언하는 더 좋은 방법
가이 코드와 끝까지 :
let mut newmask = std::mem::uninitialized();
libc::sigemptyset(&mut newmask);
이 괜찮습니다,하지만 난 때 나는 이런 식으로 뭔가와 끝까지 그 변수의 많은 :
let mut newmask = std::mem::uninitialized();
let mut oldmask = std::mem::uninitialized();
let mut pendmask = std::mem::uninitialized();
내가 그것을 응축 수 :
use std::mem::unitialized as uninit;
let (mut newmask, mut oldmask, mut pendmask) = (uninit(), uninit(), uninit());
이 코드를 작성하는 방법이 더 좋습니까? 교육적 목적을 위해 나는 분명히 libc를 사용하고 싶다.
나는 '초기화되지 않았다'는 것이 위험하다는 것을 알고있었습니다. 나는 FFI 함수가 그것들에 쓸 수있게하기 위해 그것들을 사용하고있다. let 문이 실제로 튜플을 수행한다는 것을 새로운 것이었고 이것을 '초기화되지 않은'것으로 지정할 수 있고 튜플을 세 개의 변수로 "분해"합니다. 유령 같은! :) – hansaplast
와우, 내가 읽은 위험한 기능에 대한 최고의 문서입니다. 포인터 주셔서 감사! (의도 한 말장난 없음) –