2015-03-06 50 views
5

Alcune interfacce C restituiscono il puntatore alla fine del buffer. Quindi ho bisogno di convertire l'intervallo in una fetta. Ma slice può essere creata solo da pointer e count. Quindi, come ottengo il conteggio.Calcola la distanza tra due puntatori grezzi

scrittura end - start semplicemente mi dà error: binary operation `-` cannot be applied to type `*mut i8` e std::ptr::PtrExt Basta offset metodo per calcolare fine sin dal offset, ma non l'operazione inversa.

risposta

6

Un puntatore raw può essere convertito in usize; puoi quindi eseguire la sottrazione su quelli.

end as usize - start as usize 
+0

Hm, meriterebbe aggiungendo alla std :: :: ptr PtrExt' tratto '... –

+0

non credo che l'aggiunta di un metodo per sarebbe la cosa giusta da fare, ma attuare' Sub <* const T, Output = isize> 'per' * const T' potrebbe non essere una cattiva idea. –

Problemi correlati