1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// =============================================================================
// Copyright (c) 2026 Haixing Hu.
//
// SPDX-License-Identifier: Apache-2.0
//
// Licensed under the Apache License, Version 2.0.
// =============================================================================
use io;
use IoSlice;
use IoSliceMut;
use allocation_error;
use try_reserve_vec;
/// Sums requested slice lengths, returning `InvalidInput` on `usize` overflow.
/// Bridges use this check before preparing descriptors or invoking I/O.
///
/// # Parameters
///
/// - `lengths`: The lengths to sum, in transfer order.
///
/// # Returns
///
/// The total length when it fits in `usize`.
///
/// # Errors
///
/// Returns `InvalidInput` if the sum exceeds `usize::MAX`.
pub
/// Converts borrowed byte slices to standard write descriptors.
///
/// The returned descriptors borrow the original payloads for `'a`; payload
/// bytes are not copied. The descriptor vector may allocate and returns
/// `OutOfMemory` if that allocation fails.
///
/// # Parameters
///
/// - `buffers`: The payload slices to describe, in transfer order.
///
/// # Returns
///
/// Descriptors borrowing each input payload in order.
///
/// # Errors
///
/// Returns `OutOfMemory` if reserving descriptor storage fails.
pub
/// Converts borrowed mutable byte slices to standard read descriptors.
///
/// The returned descriptors exclusively borrow the original payloads for
/// `'a`; payload bytes are not copied. The descriptor vector may allocate and
/// returns `OutOfMemory` if that allocation fails.
///
/// # Parameters
///
/// - `buffers`: The mutable payload slices to describe, in read order.
///
/// # Returns
///
/// Descriptors exclusively borrowing each input payload in order.
///
/// # Errors
///
/// Returns `OutOfMemory` if reserving descriptor storage fails.
pub
/// Extracts byte-slice borrows from standard write descriptors.
///
/// The result borrows `buffers` for `'a`, which keeps each descriptor alive
/// while its payload slice is used. It does not copy payload bytes. The result
/// vector may allocate and returns `OutOfMemory` if that allocation fails.
///
/// # Parameters
///
/// - `buffers`: The write descriptors whose payload slices are extracted.
///
/// # Returns
///
/// Payload slices borrowing the descriptors in their original order.
///
/// # Errors
///
/// Returns `OutOfMemory` if reserving the result vector fails.
pub
/// Extracts exclusive byte-slice borrows from standard read descriptors.
///
/// The result borrows `buffers` for `'a`, keeping each descriptor alive while
/// its payload slice is used. It does not copy payload bytes. The result vector
/// may allocate and returns `OutOfMemory` if that allocation fails.
///
/// # Parameters
///
/// - `buffers`: The read descriptors whose mutable payload slices are
/// extracted.
///
/// # Returns
///
/// Mutable payload slices borrowing the descriptors in their original order.
///
/// # Errors
///
/// Returns `OutOfMemory` if reserving the result vector fails.
pub