Skip to content

Commit 920809e

Browse files
committed
Add the ability to set doc strings in sockopts' definitions
1 parent 3ad0d9a commit 920809e

File tree

2 files changed

+61
-35
lines changed

2 files changed

+61
-35
lines changed

src/sys/socket/mod.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1714,21 +1714,19 @@ pub fn send(fd: RawFd, buf: &[u8], flags: MsgFlags) -> Result<usize> {
17141714
*
17151715
*/
17161716

1717-
/// Represents a socket option that can be accessed or set. Used as an argument
1718-
/// to `getsockopt`
1717+
/// Represents a socket option that can be retrieved.
17191718
pub trait GetSockOpt : Copy {
17201719
type Val;
17211720

1722-
#[doc(hidden)]
1721+
/// Look up the value of this socket option on the given socket.
17231722
fn get(&self, fd: RawFd) -> Result<Self::Val>;
17241723
}
17251724

1726-
/// Represents a socket option that can be accessed or set. Used as an argument
1727-
/// to `setsockopt`
1725+
/// Represents a socket option that can be set.
17281726
pub trait SetSockOpt : Clone {
17291727
type Val;
17301728

1731-
#[doc(hidden)]
1729+
/// Set the value of this socket option on the given socket.
17321730
fn set(&self, fd: RawFd, val: &Self::Val) -> Result<()>;
17331731
}
17341732

src/sys/socket/sockopt.rs

Lines changed: 57 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -128,82 +128,110 @@ macro_rules! getsockopt_impl {
128128
/// * `$getter:ty`: `Get` implementation; optional; only for `GetOnly` and `Both`.
129129
/// * `$setter:ty`: `Set` implementation; optional; only for `SetOnly` and `Both`.
130130
macro_rules! sockopt_impl {
131-
($name:ident, GetOnly, $level:expr, $flag:path, bool) => {
132-
sockopt_impl!($name, GetOnly, $level, $flag, bool, GetBool);
131+
($(#[$attr:meta])* $name:ident, GetOnly, $level:expr, $flag:path, bool) => {
132+
sockopt_impl!($(#[$attr])*
133+
$name, GetOnly, $level, $flag, bool, GetBool);
133134
};
134135

135-
($name:ident, GetOnly, $level:expr, $flag:path, u8) => {
136-
sockopt_impl!($name, GetOnly, $level, $flag, u8, GetU8);
136+
($(#[$attr:meta])* $name:ident, GetOnly, $level:expr, $flag:path, u8) => {
137+
sockopt_impl!($(#[$attr])* $name, GetOnly, $level, $flag, u8, GetU8);
137138
};
138139

139-
($name:ident, GetOnly, $level:expr, $flag:path, usize) => {
140-
sockopt_impl!($name, GetOnly, $level, $flag, usize, GetUsize);
140+
($(#[$attr:meta])* $name:ident, GetOnly, $level:expr, $flag:path, usize) =>
141+
{
142+
sockopt_impl!($(#[$attr])*
143+
$name, GetOnly, $level, $flag, usize, GetUsize);
141144
};
142145

143-
($name:ident, SetOnly, $level:expr, $flag:path, bool) => {
144-
sockopt_impl!($name, SetOnly, $level, $flag, bool, SetBool);
146+
($(#[$attr:meta])* $name:ident, SetOnly, $level:expr, $flag:path, bool) => {
147+
sockopt_impl!($(#[$attr])*
148+
$name, SetOnly, $level, $flag, bool, SetBool);
145149
};
146150

147-
($name:ident, SetOnly, $level:expr, $flag:path, u8) => {
148-
sockopt_impl!($name, SetOnly, $level, $flag, u8, SetU8);
151+
($(#[$attr:meta])* $name:ident, SetOnly, $level:expr, $flag:path, u8) => {
152+
sockopt_impl!($(#[$attr])* $name, SetOnly, $level, $flag, u8, SetU8);
149153
};
150154

151-
($name:ident, SetOnly, $level:expr, $flag:path, usize) => {
152-
sockopt_impl!($name, SetOnly, $level, $flag, usize, SetUsize);
155+
($(#[$attr:meta])* $name:ident, SetOnly, $level:expr, $flag:path, usize) =>
156+
{
157+
sockopt_impl!($(#[$attr])*
158+
$name, SetOnly, $level, $flag, usize, SetUsize);
153159
};
154160

155-
($name:ident, Both, $level:expr, $flag:path, bool) => {
156-
sockopt_impl!($name, Both, $level, $flag, bool, GetBool, SetBool);
161+
($(#[$attr:meta])* $name:ident, Both, $level:expr, $flag:path, bool) => {
162+
sockopt_impl!($(#[$attr])*
163+
$name, Both, $level, $flag, bool, GetBool, SetBool);
157164
};
158165

159-
($name:ident, Both, $level:expr, $flag:path, u8) => {
160-
sockopt_impl!($name, Both, $level, $flag, u8, GetU8, SetU8);
166+
($(#[$attr:meta])* $name:ident, Both, $level:expr, $flag:path, u8) => {
167+
sockopt_impl!($(#[$attr])*
168+
$name, Both, $level, $flag, u8, GetU8, SetU8);
161169
};
162170

163-
($name:ident, Both, $level:expr, $flag:path, usize) => {
164-
sockopt_impl!($name, Both, $level, $flag, usize, GetUsize, SetUsize);
171+
($(#[$attr:meta])* $name:ident, Both, $level:expr, $flag:path, usize) => {
172+
sockopt_impl!($(#[$attr])*
173+
$name, Both, $level, $flag, usize, GetUsize, SetUsize);
165174
};
166175

167-
($name:ident, Both, $level:expr, $flag:path, OsString<$array:ty>) => {
168-
sockopt_impl!($name, Both, $level, $flag, OsString, GetOsString<$array>, SetOsString);
176+
($(#[$attr:meta])* $name:ident, Both, $level:expr, $flag:path,
177+
OsString<$array:ty>) =>
178+
{
179+
sockopt_impl!($(#[$attr])*
180+
$name, Both, $level, $flag, OsString, GetOsString<$array>,
181+
SetOsString);
169182
};
170183

171184
/*
172185
* Matchers with generic getter types must be placed at the end, so
173186
* they'll only match _after_ specialized matchers fail
174187
*/
175-
($name:ident, GetOnly, $level:expr, $flag:path, $ty:ty) => {
176-
sockopt_impl!($name, GetOnly, $level, $flag, $ty, GetStruct<$ty>);
188+
($(#[$attr:meta])* $name:ident, GetOnly, $level:expr, $flag:path, $ty:ty) =>
189+
{
190+
sockopt_impl!($(#[$attr])*
191+
$name, GetOnly, $level, $flag, $ty, GetStruct<$ty>);
177192
};
178193

179-
($name:ident, GetOnly, $level:expr, $flag:path, $ty:ty, $getter:ty) => {
194+
($(#[$attr:meta])* $name:ident, GetOnly, $level:expr, $flag:path, $ty:ty,
195+
$getter:ty) =>
196+
{
197+
$(#[$attr])*
180198
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
181199
pub struct $name;
182200

183201
getsockopt_impl!($name, $level, $flag, $ty, $getter);
184202
};
185203

186-
($name:ident, SetOnly, $level:expr, $flag:path, $ty:ty) => {
187-
sockopt_impl!($name, SetOnly, $level, $flag, $ty, SetStruct<$ty>);
204+
($(#[$attr:meta])* $name:ident, SetOnly, $level:expr, $flag:path, $ty:ty) =>
205+
{
206+
sockopt_impl!($(#[$attr])*
207+
$name, SetOnly, $level, $flag, $ty, SetStruct<$ty>);
188208
};
189209

190-
($name:ident, SetOnly, $level:expr, $flag:path, $ty:ty, $setter:ty) => {
210+
($(#[$attr:meta])* $name:ident, SetOnly, $level:expr, $flag:path, $ty:ty,
211+
$setter:ty) =>
212+
{
213+
$(#[$attr])*
191214
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
192215
pub struct $name;
193216

194217
setsockopt_impl!($name, $level, $flag, $ty, $setter);
195218
};
196219

197-
($name:ident, Both, $level:expr, $flag:path, $ty:ty, $getter:ty, $setter:ty) => {
220+
($(#[$attr:meta])* $name:ident, Both, $level:expr, $flag:path, $ty:ty,
221+
$getter:ty, $setter:ty) =>
222+
{
223+
$(#[$attr])*
198224
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
199225
pub struct $name;
200226

201227
setsockopt_impl!($name, $level, $flag, $ty, $setter);
202228
getsockopt_impl!($name, $level, $flag, $ty, $getter);
203229
};
204230

205-
($name:ident, Both, $level:expr, $flag:path, $ty:ty) => {
206-
sockopt_impl!($name, Both, $level, $flag, $ty, GetStruct<$ty>, SetStruct<$ty>);
231+
($(#[$attr:meta])* $name:ident, Both, $level:expr, $flag:path, $ty:ty) => {
232+
sockopt_impl!($(#[$attr])*
233+
$name, Both, $level, $flag, $ty, GetStruct<$ty>,
234+
SetStruct<$ty>);
207235
};
208236
}
209237

0 commit comments

Comments
 (0)