Skip to content

Commit 0d09a94

Browse files
authored
Merge pull request #54 from Shnatsel/tinyvec
Switch from SmallVec to 100% safe TinyVec
2 parents 59febeb + f5712b7 commit 0d09a94

File tree

4 files changed

+14
-13
lines changed

4 files changed

+14
-13
lines changed

Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@ Unicode Standard Annex #15.
2020

2121
exclude = [ "target/*", "Cargo.lock", "scripts/tmp", "*.txt", "tests/*" ]
2222

23-
[dependencies]
24-
smallvec = "1.1"
23+
[dependencies.tinyvec]
24+
version = "0.3.2"
25+
features = ["alloc"]

src/decompose.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
10-
use smallvec::SmallVec;
10+
use tinyvec::TinyVec;
1111
use std::fmt::{self, Write};
1212
use std::iter::Fuse;
1313
use std::ops::Range;
@@ -32,7 +32,7 @@ pub struct Decompositions<I> {
3232
// 2) "Ready" characters which are sorted and ready to emit on demand;
3333
// 3) A "pending" block which stills needs more characters for us to be able
3434
// to sort in canonical order and is not safe to emit.
35-
buffer: SmallVec<[(u8, char); 4]>,
35+
buffer: TinyVec<[(u8, char); 4]>,
3636
ready: Range<usize>,
3737
}
3838

@@ -41,7 +41,7 @@ pub fn new_canonical<I: Iterator<Item=char>>(iter: I) -> Decompositions<I> {
4141
Decompositions {
4242
kind: self::DecompositionType::Canonical,
4343
iter: iter.fuse(),
44-
buffer: SmallVec::new(),
44+
buffer: TinyVec::new(),
4545
ready: 0..0,
4646
}
4747
}
@@ -51,7 +51,7 @@ pub fn new_compatible<I: Iterator<Item=char>>(iter: I) -> Decompositions<I> {
5151
Decompositions {
5252
kind: self::DecompositionType::Compatible,
5353
iter: iter.fuse(),
54-
buffer: SmallVec::new(),
54+
buffer: TinyVec::new(),
5555
ready: 0..0,
5656
}
5757
}
@@ -78,8 +78,8 @@ impl<I> Decompositions<I> {
7878

7979
#[inline]
8080
fn reset_buffer(&mut self) {
81-
// Equivalent to `self.buffer.drain(0..self.ready.end)` (if SmallVec
82-
// supported this API)
81+
// Equivalent to `self.buffer.drain(0..self.ready.end)`
82+
// but faster than drain() if the buffer is a SmallVec or TinyVec
8383
let pending = self.buffer.len() - self.ready.end;
8484
for i in 0..pending {
8585
self.buffer[i] = self.buffer[i + self.ready.end];

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
#![doc(html_logo_url = "https://unicode-rs.github.io/unicode-rs_sm.png",
4242
html_favicon_url = "https://unicode-rs.github.io/unicode-rs_sm.png")]
4343

44-
extern crate smallvec;
44+
extern crate tinyvec;
4545

4646
pub use tables::UNICODE_VERSION;
4747
pub use decompose::Decompositions;

src/recompose.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// except according to those terms.
1010

1111
use decompose::Decompositions;
12-
use smallvec::SmallVec;
12+
use tinyvec::TinyVec;
1313
use std::fmt::{self, Write};
1414

1515
#[derive(Clone)]
@@ -24,7 +24,7 @@ enum RecompositionState {
2424
pub struct Recompositions<I> {
2525
iter: Decompositions<I>,
2626
state: RecompositionState,
27-
buffer: SmallVec<[char; 4]>,
27+
buffer: TinyVec<[char; 4]>,
2828
composee: Option<char>,
2929
last_ccc: Option<u8>,
3030
}
@@ -34,7 +34,7 @@ pub fn new_canonical<I: Iterator<Item=char>>(iter: I) -> Recompositions<I> {
3434
Recompositions {
3535
iter: super::decompose::new_canonical(iter),
3636
state: self::RecompositionState::Composing,
37-
buffer: SmallVec::new(),
37+
buffer: TinyVec::new(),
3838
composee: None,
3939
last_ccc: None,
4040
}
@@ -45,7 +45,7 @@ pub fn new_compatible<I: Iterator<Item=char>>(iter: I) -> Recompositions<I> {
4545
Recompositions {
4646
iter: super::decompose::new_compatible(iter),
4747
state: self::RecompositionState::Composing,
48-
buffer: SmallVec::new(),
48+
buffer: TinyVec::new(),
4949
composee: None,
5050
last_ccc: None,
5151
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy