Add missing examples to SocketAddrV6

This commit is contained in:
Guillaume Gomez
2016-11-23 17:14:41 +01:00
parent 9fba8df211
commit 559141c827

View File

@@ -236,6 +236,14 @@ impl SocketAddrV4 {
impl SocketAddrV6 { impl SocketAddrV6 {
/// Creates a new socket address from the ip/port/flowinfo/scope_id /// Creates a new socket address from the ip/port/flowinfo/scope_id
/// components. /// components.
///
/// # Examples
///
/// ```
/// use std::net::{SocketAddrV6, Ipv6Addr};
///
/// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
/// ```
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
pub fn new(ip: Ipv6Addr, port: u16, flowinfo: u32, scope_id: u32) pub fn new(ip: Ipv6Addr, port: u16, flowinfo: u32, scope_id: u32)
-> SocketAddrV6 { -> SocketAddrV6 {
@@ -252,6 +260,15 @@ impl SocketAddrV6 {
} }
/// Returns the IP address associated with this socket address. /// Returns the IP address associated with this socket address.
///
/// # Examples
///
/// ```
/// use std::net::{SocketAddrV6, Ipv6Addr};
///
/// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
/// assert_eq!(socket.ip(), &Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1));
/// ```
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
pub fn ip(&self) -> &Ipv6Addr { pub fn ip(&self) -> &Ipv6Addr {
unsafe { unsafe {
@@ -260,18 +277,47 @@ impl SocketAddrV6 {
} }
/// Change the IP address associated with this socket address. /// Change the IP address associated with this socket address.
///
/// # Examples
///
/// ```
/// use std::net::{SocketAddrV6, Ipv6Addr};
///
/// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
/// socket.set_ip(Ipv6Addr::new(76, 45, 0, 0, 0, 0, 0, 0));
/// assert_eq!(socket.ip(), &Ipv6Addr::new(76, 45, 0, 0, 0, 0, 0, 0));
/// ```
#[stable(feature = "sockaddr_setters", since = "1.9.0")] #[stable(feature = "sockaddr_setters", since = "1.9.0")]
pub fn set_ip(&mut self, new_ip: Ipv6Addr) { pub fn set_ip(&mut self, new_ip: Ipv6Addr) {
self.inner.sin6_addr = *new_ip.as_inner() self.inner.sin6_addr = *new_ip.as_inner()
} }
/// Returns the port number associated with this socket address. /// Returns the port number associated with this socket address.
///
/// # Examples
///
/// ```
/// use std::net::{SocketAddrV6, Ipv6Addr};
///
/// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
/// assert_eq!(socket.port(), 8080);
/// ```
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
pub fn port(&self) -> u16 { pub fn port(&self) -> u16 {
ntoh(self.inner.sin6_port) ntoh(self.inner.sin6_port)
} }
/// Change the port number associated with this socket address. /// Change the port number associated with this socket address.
///
/// # Examples
///
/// ```
/// use std::net::{SocketAddrV6, Ipv6Addr};
///
/// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
/// socket.set_port(4242);
/// assert_eq!(socket.port(), 4242);
/// ```
#[stable(feature = "sockaddr_setters", since = "1.9.0")] #[stable(feature = "sockaddr_setters", since = "1.9.0")]
pub fn set_port(&mut self, new_port: u16) { pub fn set_port(&mut self, new_port: u16) {
self.inner.sin6_port = hton(new_port); self.inner.sin6_port = hton(new_port);
@@ -279,12 +325,31 @@ impl SocketAddrV6 {
/// Returns the flow information associated with this address, /// Returns the flow information associated with this address,
/// corresponding to the `sin6_flowinfo` field in C. /// corresponding to the `sin6_flowinfo` field in C.
///
/// # Examples
///
/// ```
/// use std::net::{SocketAddrV6, Ipv6Addr};
///
/// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 10, 0);
/// assert_eq!(socket.flowinfo(), 10);
/// ```
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
pub fn flowinfo(&self) -> u32 { pub fn flowinfo(&self) -> u32 {
self.inner.sin6_flowinfo self.inner.sin6_flowinfo
} }
/// Change the flow information associated with this socket address. /// Change the flow information associated with this socket address.
///
/// # Examples
///
/// ```
/// use std::net::{SocketAddrV6, Ipv6Addr};
///
/// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 10, 0);
/// socket.set_flowinfo(56);
/// assert_eq!(socket.flowinfo(), 56);
/// ```
#[stable(feature = "sockaddr_setters", since = "1.9.0")] #[stable(feature = "sockaddr_setters", since = "1.9.0")]
pub fn set_flowinfo(&mut self, new_flowinfo: u32) { pub fn set_flowinfo(&mut self, new_flowinfo: u32) {
self.inner.sin6_flowinfo = new_flowinfo; self.inner.sin6_flowinfo = new_flowinfo;
@@ -292,12 +357,31 @@ impl SocketAddrV6 {
/// Returns the scope ID associated with this address, /// Returns the scope ID associated with this address,
/// corresponding to the `sin6_scope_id` field in C. /// corresponding to the `sin6_scope_id` field in C.
///
/// # Examples
///
/// ```
/// use std::net::{SocketAddrV6, Ipv6Addr};
///
/// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 78);
/// assert_eq!(socket.scope_id(), 78);
/// ```
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
pub fn scope_id(&self) -> u32 { pub fn scope_id(&self) -> u32 {
self.inner.sin6_scope_id self.inner.sin6_scope_id
} }
/// Change the scope ID associated with this socket address. /// Change the scope ID associated with this socket address.
///
/// # Examples
///
/// ```
/// use std::net::{SocketAddrV6, Ipv6Addr};
///
/// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 78);
/// socket.set_scope_id(42);
/// assert_eq!(socket.scope_id(), 42);
/// ```
#[stable(feature = "sockaddr_setters", since = "1.9.0")] #[stable(feature = "sockaddr_setters", since = "1.9.0")]
pub fn set_scope_id(&mut self, new_scope_id: u32) { pub fn set_scope_id(&mut self, new_scope_id: u32) {
self.inner.sin6_scope_id = new_scope_id; self.inner.sin6_scope_id = new_scope_id;