作者:悲剧制造商_469 | 来源:互联网 | 2023-05-25 19:54
我有一个返回指针的C函数:
type MYSQL_RES_REF = *mut c_void;
type MYSQL_ROW = *const *const c_char;
#[no_mangle]
extern "C" {
fn mysql_fetch_row(res: MYSQL_RES_REF) -> MYSQL_ROW;
}
let pointer = mysql_fetch_row(self.res);
let row_p = match pointer {
p if p == (0 as *const *const c_char) => panic!(),
p => p,
};
let field: &[u8] = unsafe { ffi::c_str_to_bytes(row_p[i]) };
但尝试索引它(最后一行)会导致错误:
error: cannot index a value of type `*const *const i8`
我想知道std::c_vec
是不是我想要的,但显然已被删除.
1> Matthieu M...:
offset
指针上有一个方法可以用作:
let new_p = p.offset(i);
使指针i
元素远离当前的元素.显然,它不受边界检查,因此您必须确保它保持在边界内(或者一个接一个地).
还有一种不稳定的offset
内在因素.