smartlist.rs: do not use i8 interchangeably with libc::c_char
I tried to look at why our arm rust builds are failing, and found these warnings: ``` 20:53:59 --> /srv/jenkins-workspace/workspace/tor-ci-linux-master-rust-arm/ARCHITECTURE/armhf/SUITE/sid/tor/src/rust/smartlist/smartlist.rs:37:44 20:53:59 | 20:53:59 37 | unsafe { slice::from_raw_parts(self.list, self.num_used as usize) }; 20:53:59 | ^^^^^^^^^ expected i8, found u8 20:53:59 | 20:53:59 = note: expected type `*const *const i8` 20:53:59 found type `*const *const u8` 20:53:59 20:53:59 error[E0308]: mismatched types 20:53:59 --> /srv/jenkins-workspace/workspace/tor-ci-linux-master-rust-arm/ARCHITECTURE/armhf/SUITE/sid/tor/src/rust/smartlist/smartlist.rs:46:52 20:53:59 | 20:53:59 46 | let c_string = unsafe { CStr::from_ptr(*elem) }; 20:53:59 | ^^^^^ expected u8, found i8 20:53:59 | 20:53:59 = note: expected type `*const u8` 20:53:59 found type `*const i8` 20:53:59 ``` They happen because we're declaring Stringlist::list as `c_char`, but we're declaring elems as `i8`. That's fine on platforms where C's `char` is signed, but on other platforms, `char` is unsigned, and libc::c_char is `u8`. I believe we can fix this by changing `i8` to `c_char` on this line: ``` let elems: &[*const i8] = unsafe { slice::from_raw_parts(self.list, self.num_used as usize) }; ```
issue