debug!("rcvr_substs=%?", rcvr_substs.map(|t| bcx.ty_to_str(*t)));
let ty_substs
= vec::append(rcvr_substs.to_owned(),
- vec::tailn(node_substs,
- node_substs.len() - n_m_tps));
+ node_substs.tailn(node_substs.len() - n_m_tps));
debug!("n_m_tps=%?", n_m_tps);
debug!("node_substs=%?", node_substs.map(|t| bcx.ty_to_str(*t)));
debug!("ty_substs=%?", ty_substs.map(|t| bcx.ty_to_str(*t)));
};
// Extract those that belong to method:
- let m_origins = vec::tailn(*r_m_origins, r_m_origins.len() - m_vtables);
+ let m_origins = r_m_origins.tailn(r_m_origins.len() - m_vtables);
// Combine rcvr + method to find the final result:
@vec::append(/*bad*/copy *rcvr_origins, m_origins)
// Accessors
-/// Returns the first element of a vector
-pub fn head<'r,T>(v: &'r [T]) -> &'r T {
- if v.len() == 0 { fail!("head: empty vector") }
- &v[0]
-}
-
-/// Returns `Some(x)` where `x` is the first element of the slice `v`,
-/// or `None` if the vector is empty.
-pub fn head_opt<'r,T>(v: &'r [T]) -> Option<&'r T> {
- if v.len() == 0 { None } else { Some(&v[0]) }
-}
-
-/// Returns a vector containing all but the first element of a slice
-pub fn tail<'r,T>(v: &'r [T]) -> &'r [T] { v.slice(1, v.len()) }
-
-/// Returns a vector containing all but the first `n` elements of a slice
-pub fn tailn<'r,T>(v: &'r [T], n: uint) -> &'r [T] { v.slice(n, v.len()) }
-
-/// Returns a vector containing all but the last element of a slice
-pub fn init<'r,T>(v: &'r [T]) -> &'r [T] { v.slice(0, v.len() - 1) }
-
-/// Returns a vector containing all but the last `n' elements of a slice
-pub fn initn<'r,T>(v: &'r [T], n: uint) -> &'r [T] {
- v.slice(0, v.len() - n)
-}
-
-/// Returns the last element of the slice `v`, failing if the slice is empty.
-pub fn last<'r,T>(v: &'r [T]) -> &'r T {
- if v.len() == 0 { fail!("last: empty vector") }
- &v[v.len() - 1]
-}
-
-/// Returns `Some(x)` where `x` is the last element of the slice `v`, or
-/// `None` if the vector is empty.
-pub fn last_opt<'r,T>(v: &'r [T]) -> Option<&'r T> {
- if v.len() == 0 { None } else { Some(&v[v.len() - 1]) }
-}
-
/// Copies
/// Split the vector `v` by applying each element against the predicate `f`.
/// Returns the first element of a vector, failing if the vector is empty.
#[inline]
- fn head(&self) -> &'self T { head(*self) }
+ fn head(&self) -> &'self T {
+ if self.len() == 0 { fail!("head: empty vector") }
+ &self[0]
+ }
- /// Returns the first element of a vector
+ /// Returns the first element of a vector, or `None` if it is empty
#[inline]
- fn head_opt(&self) -> Option<&'self T> { head_opt(*self) }
+ fn head_opt(&self) -> Option<&'self T> {
+ if self.len() == 0 { None } else { Some(&self[0]) }
+ }
/// Returns all but the first element of a vector
#[inline]
- fn tail(&self) -> &'self [T] { tail(*self) }
+ fn tail(&self) -> &'self [T] { self.slice(1, self.len()) }
/// Returns all but the first `n' elements of a vector
#[inline]
- fn tailn(&self, n: uint) -> &'self [T] { tailn(*self, n) }
+ fn tailn(&self, n: uint) -> &'self [T] { self.slice(n, self.len()) }
- /// Returns all but the last elemnt of a vector
+ /// Returns all but the last element of a vector
#[inline]
- fn init(&self) -> &'self [T] { init(*self) }
+ fn init(&self) -> &'self [T] {
+ self.slice(0, self.len() - 1)
+ }
/// Returns all but the last `n' elemnts of a vector
#[inline]
- fn initn(&self, n: uint) -> &'self [T] { initn(*self, n) }
+ fn initn(&self, n: uint) -> &'self [T] {
+ self.slice(0, self.len() - n)
+ }
- /// Returns the last element of a `v`, failing if the vector is empty.
+ /// Returns the last element of a vector, failing if the vector is empty.
#[inline]
- fn last(&self) -> &'self T { last(*self) }
+ fn last(&self) -> &'self T {
+ if self.len() == 0 { fail!("last: empty vector") }
+ &self[self.len() - 1]
+ }
- /// Returns the last element of a `v`, failing if the vector is empty.
+ /// Returns the last element of a vector, or `None` if it is empty.
#[inline]
- fn last_opt(&self) -> Option<&'self T> { last_opt(*self) }
+ fn last_opt(&self) -> Option<&'self T> {
+ if self.len() == 0 { None } else { Some(&self[self.len() - 1]) }
+ }
/**
* Find the last index matching some predicate