From 9f7ed2f054c72dd0989b42ed3e6a839e64d9fa1a Mon Sep 17 00:00:00 2001 From: Tim Chevalier Date: Tue, 30 Aug 2011 17:17:42 -0700 Subject: [PATCH] Add a total version of vec::last that has a precondition --- src/lib/vec.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/lib/vec.rs b/src/lib/vec.rs index daa1d499d58..8a20345b864 100644 --- a/src/lib/vec.rs +++ b/src/lib/vec.rs @@ -97,6 +97,11 @@ fn last<@T>(v: &[mutable? T]) -> option::t { ret some(v[len(v) - 1u]); } +/// Returns the last element of a non-empty vector `v`. +fn last_total<@T>(v: &[mutable? T]) : is_not_empty(v) -> T { + ret v[len(v) - 1u]; +} + /// Returns a copy of the elements from [`start`..`end`) from `v`. fn slice<@T>(v: &[mutable? T], start: uint, end: uint) -> [T] { assert (start <= end);