]>
git.proxmox.com Git - cargo.git/blob - vendor/iovec/src/sys/windows.rs
1 use winapi
::shared
::minwindef
::DWORD
;
2 use winapi
::shared
::ws2def
::WSABUF
;
3 use std
::{mem, slice, u32}
;
9 pub const MAX_LENGTH
: usize = u32::MAX
as usize;
12 pub fn as_ref(&self) -> &[u8] {
14 let vec
= self.wsabuf();
15 slice
::from_raw_parts(vec
.buf
as *const u8, vec
.len
as usize)
19 pub fn as_mut(&mut self) -> &mut [u8] {
21 let vec
= self.wsabuf();
22 slice
::from_raw_parts_mut(vec
.buf
as *mut u8, vec
.len
as usize)
26 unsafe fn wsabuf(&self) -> WSABUF
{
27 mem
::transmute(&self.inner
)
31 impl<'a
> From
<&'a
[u8]> for &'a IoVec
{
32 fn from(src
: &'a
[u8]) -> Self {
33 assert
!(src
.len() > 0);
34 assert
!(src
.len() <= MAX_LENGTH
);
37 mem
::transmute(WSABUF
{
38 buf
: src
.as_ptr() as *mut _
,
39 len
: src
.len() as DWORD
,
45 impl<'a
> From
<&'a
mut [u8]> for &'a
mut IoVec
{
46 fn from(src
: &'a
mut [u8]) -> Self {
47 assert
!(src
.len() > 0);
48 assert
!(src
.len() <= MAX_LENGTH
);
51 mem
::transmute(WSABUF
{
52 buf
: src
.as_ptr() as *mut _
,
53 len
: src
.len() as DWORD
,