[librsvg: 4/6] Dasharray: turn the Array variant into a boxed slice
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 4/6] Dasharray: turn the Array variant into a boxed slice
- Date: Tue, 2 Mar 2021 01:12:20 +0000 (UTC)
commit 853cb499df8497aad74f0508512e744e82d1ed6a
Author: Federico Mena Quintero <federico gnome org>
Date: Mon Mar 1 18:49:37 2021 -0600
Dasharray: turn the Array variant into a boxed slice
This removes 8 bytes from the variant; we don't need a growable Vec
here.
cargo +nightly rustc -- -Z print-type-sizes
Before:
print-type-size type: `librsvg::properties::ComputedValues`: 432 bytes, alignment: 8 bytes
After:
print-type-size type: `librsvg::properties::ComputedValues`: 424 bytes, alignment: 8 bytes
src/dasharray.rs | 33 +++++++++++++++++++--------------
1 file changed, 19 insertions(+), 14 deletions(-)
---
diff --git a/src/dasharray.rs b/src/dasharray.rs
index 31a35f79..ae0e9488 100644
--- a/src/dasharray.rs
+++ b/src/dasharray.rs
@@ -9,7 +9,7 @@ use crate::parsers::{optional_comma, Parse};
#[derive(Debug, PartialEq, Clone)]
pub enum Dasharray {
None,
- Array(Vec<ULength<Both>>),
+ Array(Box<[ULength<Both>]>),
}
enum_default!(Dasharray, Dasharray::None);
@@ -36,7 +36,7 @@ impl Parse for Dasharray {
optional_comma(parser);
}
- Ok(Dasharray::Array(dasharray))
+ Ok(Dasharray::Array(dasharray.into_boxed_slice()))
}
}
@@ -44,42 +44,47 @@ impl Parse for Dasharray {
mod tests {
use super::*;
+ fn dasharray(l: &[ULength<Both>]) -> Dasharray {
+ Dasharray::Array(
+ l.iter()
+ .cloned()
+ .collect::<Vec<ULength<Both>>>()
+ .into_boxed_slice(),
+ )
+ }
+
#[test]
fn parses_dash_array() {
// helper to cut down boilderplate
let length_parse = |s| ULength::<Both>::parse_str(s).unwrap();
- let expected = Dasharray::Array(vec![
+ let expected = dasharray(&[
length_parse("1"),
length_parse("2in"),
length_parse("3"),
length_parse("4%"),
]);
- let sample_1 = Dasharray::Array(vec![length_parse("10"), length_parse("6")]);
+ let sample_1 = dasharray(&[length_parse("10"), length_parse("6")]);
- let sample_2 = Dasharray::Array(vec![
- length_parse("5"),
- length_parse("5"),
- length_parse("20"),
- ]);
+ let sample_2 = dasharray(&[length_parse("5"), length_parse("5"), length_parse("20")]);
- let sample_3 = Dasharray::Array(vec![
+ let sample_3 = dasharray(&[
length_parse("10px"),
length_parse("20px"),
length_parse("20px"),
]);
- let sample_4 = Dasharray::Array(vec![
+ let sample_4 = dasharray(&[
length_parse("25"),
length_parse("5"),
length_parse("5"),
length_parse("5"),
]);
- let sample_5 = Dasharray::Array(vec![length_parse("3.1415926"), length_parse("8")]);
- let sample_6 = Dasharray::Array(vec![length_parse("5"), length_parse("3.14")]);
- let sample_7 = Dasharray::Array(vec![length_parse("2")]);
+ let sample_5 = dasharray(&[length_parse("3.1415926"), length_parse("8")]);
+ let sample_6 = dasharray(&[length_parse("5"), length_parse("3.14")]);
+ let sample_7 = dasharray(&[length_parse("2")]);
assert_eq!(Dasharray::parse_str("none").unwrap(), Dasharray::None);
assert_eq!(Dasharray::parse_str("1 2in,3 4%").unwrap(), expected);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]