Skip to content
Snippets Groups Projects

Resolve "TransactionDocument: replace Vec fields by SmallVec"

Files
3
@@ -27,6 +27,7 @@ use durs_common_tools::{fatal_error, UsizeSer32};
use pest::iterators::Pair;
use pest::iterators::Pairs;
use pest::Parser;
use smallvec::SmallVec;
use std::str::FromStr;
use unwrap::unwrap;
@@ -288,17 +289,17 @@ pub struct TransactionDocumentV10 {
/// Locktime
locktime: u64,
/// Document issuers.
issuers: Vec<PubKey>,
issuers: SmallVec<[PubKey; 4]>,
/// Transaction inputs.
inputs: Vec<TransactionInputV10>,
inputs: SmallVec<[TransactionInputV10; 32]>,
/// Inputs unlocks.
unlocks: Vec<TransactionInputUnlocksV10>,
unlocks: SmallVec<[TransactionInputUnlocksV10; 32]>,
/// Transaction outputs.
outputs: Vec<TransactionOutputV10>,
outputs: SmallVec<[TransactionOutputV10; 8]>,
/// Transaction comment
comment: String,
/// Document signatures.
signatures: Vec<Sig>,
signatures: SmallVec<[Sig; 4]>,
/// Transaction hash
hash: Option<Hash>,
}
@@ -407,12 +408,12 @@ impl TransactionDocumentV10 {
let mut currency = "";
let mut blockstamp = Blockstamp::default();
let mut locktime = 0;
let mut issuers = Vec::new();
let mut inputs = Vec::new();
let mut unlocks = Vec::new();
let mut outputs = Vec::new();
let mut issuers = SmallVec::<[PubKey; 4]>::new();
let mut inputs = SmallVec::new();
let mut unlocks = SmallVec::new();
let mut outputs = SmallVec::new();
let mut comment = "";
let mut sigs = Vec::new();
let mut sigs = SmallVec::<[Sig; 4]>::new();
for field in pair.into_inner() {
match field.as_rule() {
@@ -482,11 +483,11 @@ impl Document for TransactionDocumentV10 {
self.blockstamp
}
fn issuers(&self) -> &Vec<PubKey> {
fn issuers(&self) -> &SmallVec<[PubKey; 4]> {
&self.issuers
}
fn signatures(&self) -> &Vec<Sig> {
fn signatures(&self) -> &SmallVec<[Sig; 4]> {
&self.signatures
}
@@ -598,12 +599,12 @@ impl<'a> TransactionDocumentV10Builder<'a> {
currency: self.currency.to_string(),
blockstamp: *self.blockstamp,
locktime: *self.locktime,
issuers: self.issuers.to_vec(),
inputs: self.inputs.to_vec(),
unlocks: self.unlocks.to_vec(),
outputs: self.outputs.to_vec(),
issuers: SmallVec::from_slice(self.issuers),
inputs: SmallVec::from_slice(self.inputs),
unlocks: SmallVec::from(self.unlocks),
outputs: SmallVec::from(self.outputs),
comment: String::from(self.comment),
signatures,
signatures: SmallVec::from_vec(signatures),
hash: self.hash,
}
}
Loading