tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

vec_ext.rs (871B)


      1 // Copyright 2019 The Servo Project Developers. See the COPYRIGHT
      2 // file at the top-level directory of this distribution and at
      3 // http://rust-lang.org/COPYRIGHT.
      4 //
      5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
      6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
      7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
      8 // option. This file may not be copied, modified, or distributed
      9 // except according to those terms.
     10 
     11 pub trait VecExt  {
     12    type Item;
     13    unsafe fn set_end_ptr(&mut self, end: *const Self::Item);
     14 }
     15 
     16 impl<T> VecExt for Vec<T> {
     17    type Item = T;
     18    unsafe fn set_end_ptr(&mut self, end: *const T) {
     19        assert!(end as usize >= self.as_ptr() as usize);
     20        let new_len = end as usize - self.as_ptr() as usize;
     21        assert!(new_len <= self.capacity());
     22        self.set_len(new_len);
     23    }
     24 }