Allow copying socket set handles.

Trying to keep them unique was kind of a losing battle anyway.
v0.7.x
whitequark 2017-01-12 04:09:41 +00:00
parent 7f095f6429
commit 6ccc48d647
1 changed files with 5 additions and 5 deletions

View File

@ -4,7 +4,7 @@ use core::slice;
use super::Socket;
/// A handle, identifying a socket in a set.
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)]
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)]
pub struct Handle {
index: usize
}
@ -51,20 +51,20 @@ impl<'a, 'b: 'a, 'c: 'a + 'b> Set<'a, 'b, 'c> {
///
/// # Panics
/// This function may panic if the handle does not belong to this socket set.
pub fn get(&self, handle: &Handle) -> &Socket<'b, 'c> {
pub fn get(&self, handle: Handle) -> &Socket<'b, 'c> {
self.sockets[handle.index]
.as_ref()
.expect("handle does not contain a valid socket index")
.expect("handle does not refer to a valid socket")
}
/// Get a socket from the set by its handle, as mutable.
///
/// # Panics
/// This function may panic if the handle does not belong to this socket set.
pub fn get_mut(&mut self, handle: &Handle) -> &mut Socket<'b, 'c> {
pub fn get_mut(&mut self, handle: Handle) -> &mut Socket<'b, 'c> {
self.sockets[handle.index]
.as_mut()
.expect("handle does not contain a valid socket index")
.expect("handle does not refer to a valid socket")
}
/// Remove a socket from the set, without changing its state.