2015-03-06 24 views
5

Einige C-Schnittstellen geben Zeiger auf das Ende des Puffers zurück. Also muss ich den Bereich in ein Stück umwandeln. Aber Slice kann nur aus Zeiger und Anzahl erstellt werden. Wie bekomme ich die Zählung?Abstand zwischen zwei rohen Zeigern berechnen

Schreiben end - start einfach gibt mir error: binary operation `-` cannot be applied to type `*mut i8` und std::ptr::PtrExt haben nur offset Verfahren Ende aus dem Offset zu berechnen, aber nicht die inverse Operation.

Antwort

6

Ein roher Zeiger kann in usize umgewandelt werden; Sie können dann eine Subtraktion durchführen.

end as usize - start as usize 
+0

Hm, wäre es das Hinzufügen verdient mit dem 'std :: ptr :: PtrExt' Zu ... –

+0

Ich glaube nicht, dass ein Verfahren zur Zugabe es das Richtige wäre zu tun, aber die Umsetzung' Sub <* const T, Output = isize> 'für' * const T' ist vielleicht keine schlechte Idee. –

Verwandte Themen