Make sure the methods on RangeArgument can be inlined

This commit is contained in:
root
2015-05-23 12:43:45 +02:00
parent 3175d97f80
commit 1eec0d4834
+6
View File
@@ -8,9 +8,11 @@ use std::ops::{
/// **RangeArgument** is implemented by Rust's built-in range types, produced /// **RangeArgument** is implemented by Rust's built-in range types, produced
/// by range syntax like `..`, `a..`, `..b` or `c..d`. /// by range syntax like `..`, `a..`, `..b` or `c..d`.
pub trait RangeArgument { pub trait RangeArgument {
#[inline]
#[doc(hidden)] #[doc(hidden)]
/// Start index (inclusive) /// Start index (inclusive)
fn start(&self) -> Option<usize> { None } fn start(&self) -> Option<usize> { None }
#[inline]
#[doc(hidden)] #[doc(hidden)]
/// End index (exclusive) /// End index (exclusive)
fn end(&self) -> Option<usize> { None } fn end(&self) -> Option<usize> { None }
@@ -20,15 +22,19 @@ pub trait RangeArgument {
impl RangeArgument for RangeFull {} impl RangeArgument for RangeFull {}
impl RangeArgument for RangeFrom<usize> { impl RangeArgument for RangeFrom<usize> {
#[inline]
fn start(&self) -> Option<usize> { Some(self.start) } fn start(&self) -> Option<usize> { Some(self.start) }
} }
impl RangeArgument for RangeTo<usize> { impl RangeArgument for RangeTo<usize> {
#[inline]
fn end(&self) -> Option<usize> { Some(self.end) } fn end(&self) -> Option<usize> { Some(self.end) }
} }
impl RangeArgument for Range<usize> { impl RangeArgument for Range<usize> {
#[inline]
fn start(&self) -> Option<usize> { Some(self.start) } fn start(&self) -> Option<usize> { Some(self.start) }
#[inline]
fn end(&self) -> Option<usize> { Some(self.end) } fn end(&self) -> Option<usize> { Some(self.end) }
} }