Use DeserializeOwned where applicable.

This commit is contained in:
Andreas Fackler 2018-10-24 11:38:14 +02:00 committed by Andreas Fackler
parent 6375decbc0
commit 493b946a4a
9 changed files with 28 additions and 40 deletions

View File

@ -4,7 +4,7 @@
use bincode;
use crossbeam;
use crossbeam_channel::{Receiver, Sender};
use serde::{Deserialize, Serialize};
use serde::{de::DeserializeOwned, Serialize};
use std::io;
use std::net::TcpStream;
@ -34,7 +34,7 @@ pub struct CommsTask<'a, M: 'a> {
pub node_index: usize,
}
impl<'a, M: Serialize + for<'de> Deserialize<'de> + Send + 'a> CommsTask<'a, M> {
impl<'a, M: Serialize + DeserializeOwned + Send + 'a> CommsTask<'a, M> {
pub fn new(
tx: &'a Sender<SourcedMessage<M, usize>>,
rx: &'a Receiver<M>,

View File

@ -1,8 +1,6 @@
use std::collections::BTreeMap;
use std::sync::Arc;
use serde::{Deserialize, Serialize};
use super::{ChangeState, JoinPlan};
use {NetworkInfo, NodeIdT};
@ -83,10 +81,7 @@ impl<C, N: NodeIdT> Batch<C, N> {
/// Returns the `JoinPlan` to be sent to new observer nodes, if it is possible to join in the
/// next epoch.
pub fn join_plan(&self) -> Option<JoinPlan<N>>
where
N: Serialize + for<'r> Deserialize<'r>,
{
pub fn join_plan(&self) -> Option<JoinPlan<N>> {
if self.change == ChangeState::None {
return None;
}

View File

@ -5,7 +5,7 @@ use std::sync::Arc;
use crypto::{SecretKey, SecretKeySet, SecretKeyShare};
use rand::{self, Rand, Rng};
use serde::{Deserialize, Serialize};
use serde::{de::DeserializeOwned, Serialize};
use super::{ChangeState, DynamicHoneyBadger, JoinPlan, Result, Step, VoteCounter};
use honey_badger::{HoneyBadger, SubsetHandlingStrategy};
@ -42,8 +42,8 @@ impl<C, N> Default for DynamicHoneyBadgerBuilder<C, N> {
impl<C, N> DynamicHoneyBadgerBuilder<C, N>
where
C: Contribution + Serialize + for<'r> Deserialize<'r>,
N: NodeIdT + Serialize + for<'r> Deserialize<'r> + Rand,
C: Contribution + Serialize + DeserializeOwned,
N: NodeIdT + Serialize + DeserializeOwned + Rand,
{
/// Returns a new `DynamicHoneyBadgerBuilder` configured to use the node IDs and cryptographic
/// keys specified by `netinfo`.

View File

@ -5,7 +5,7 @@ use std::sync::Arc;
use bincode;
use crypto::Signature;
use rand::{self, Rand};
use serde::{Deserialize, Serialize};
use serde::{de::DeserializeOwned, Serialize};
use super::votes::{SignedVote, VoteCounter};
use super::{
@ -46,8 +46,8 @@ pub struct DynamicHoneyBadger<C, N: Rand> {
impl<C, N> DistAlgorithm for DynamicHoneyBadger<C, N>
where
C: Contribution + Serialize + for<'r> Deserialize<'r>,
N: NodeIdT + Serialize + for<'r> Deserialize<'r> + Rand,
C: Contribution + Serialize + DeserializeOwned,
N: NodeIdT + Serialize + DeserializeOwned + Rand,
{
type NodeId = N;
type Input = Input<C, N>;
@ -79,8 +79,8 @@ where
impl<C, N> DynamicHoneyBadger<C, N>
where
C: Contribution + Serialize + for<'r> Deserialize<'r>,
N: NodeIdT + Serialize + for<'r> Deserialize<'r> + Rand,
C: Contribution + Serialize + DeserializeOwned,
N: NodeIdT + Serialize + DeserializeOwned + Rand,
{
/// Returns a new `DynamicHoneyBadgerBuilder`.
pub fn builder() -> DynamicHoneyBadgerBuilder<C, N> {

View File

@ -3,7 +3,7 @@ use std::sync::Arc;
use bincode;
use crypto::Signature;
use serde::{Deserialize, Serialize};
use serde::Serialize;
use super::{Change, ErrorKind, Result};
use fault_log::{FaultKind, FaultLog};
@ -28,7 +28,7 @@ pub struct VoteCounter<N> {
impl<N> VoteCounter<N>
where
N: NodeIdT + Serialize + for<'r> Deserialize<'r>,
N: NodeIdT + Serialize,
{
/// Creates a new `VoteCounter` object with empty buffer and counter.
pub fn new(netinfo: Arc<NetworkInfo<N>>, era: u64) -> Self {

View File

@ -3,7 +3,7 @@ use std::marker::PhantomData;
use std::sync::Arc;
use rand::{self, Rand, Rng};
use serde::{Deserialize, Serialize};
use serde::{de::DeserializeOwned, Serialize};
use super::HoneyBadger;
use honey_badger::SubsetHandlingStrategy;
@ -27,7 +27,7 @@ pub struct HoneyBadgerBuilder<C, N> {
impl<C, N> HoneyBadgerBuilder<C, N>
where
C: Contribution + Serialize + for<'r> Deserialize<'r>,
C: Contribution + Serialize + DeserializeOwned,
N: NodeIdT + Rand,
{
/// Returns a new `HoneyBadgerBuilder` configured to use the node IDs and cryptographic keys

View File

@ -7,7 +7,7 @@ use std::sync::Arc;
use bincode;
use crypto::Ciphertext;
use rand::Rand;
use serde::{Deserialize, Serialize};
use serde::{de::DeserializeOwned, Serialize};
use super::{Batch, ErrorKind, MessageContent, Result, Step};
use fault_log::{Fault, FaultKind, FaultLog};
@ -188,7 +188,7 @@ pub struct EpochState<C, N: Rand> {
impl<C, N> EpochState<C, N>
where
C: Contribution + Serialize + for<'r> Deserialize<'r>,
C: Contribution + Serialize + DeserializeOwned,
N: NodeIdT + Rand,
{
/// Creates a new `Subset` instance.

View File

@ -4,7 +4,7 @@ use std::sync::Arc;
use bincode;
use rand::{Rand, Rng};
use serde::{Deserialize, Serialize};
use serde::{de::DeserializeOwned, Serialize};
use super::epoch_state::EpochState;
use super::{Batch, Error, ErrorKind, HoneyBadgerBuilder, Message, MessageContent, Result};
@ -40,7 +40,7 @@ pub type Step<C, N> = ::Step<HoneyBadger<C, N>>;
impl<C, N> DistAlgorithm for HoneyBadger<C, N>
where
C: Contribution + Serialize + for<'r> Deserialize<'r>,
C: Contribution + Serialize + DeserializeOwned,
N: NodeIdT + Rand,
{
type NodeId = N;
@ -68,7 +68,7 @@ where
impl<C, N> HoneyBadger<C, N>
where
C: Contribution + Serialize + for<'r> Deserialize<'r>,
C: Contribution + Serialize + DeserializeOwned,
N: NodeIdT + Rand,
{
/// Returns a new `HoneyBadgerBuilder` configured to use the node IDs and cryptographic keys

View File

@ -28,7 +28,7 @@ use std::{cmp, iter};
use failure::{Backtrace, Context, Fail};
use rand::{Rand, Rng};
use serde::{Deserialize, Serialize};
use serde::{de::DeserializeOwned, Serialize};
use dynamic_honey_badger::{self, Batch as DhbBatch, DynamicHoneyBadger, Message};
use transaction_queue::TransactionQueue;
@ -107,8 +107,8 @@ pub type QueueingHoneyBadgerWithStep<T, N, Q> = (QueueingHoneyBadger<T, N, Q>, S
impl<T, N, Q> QueueingHoneyBadgerBuilder<T, N, Q>
where
T: Contribution + Serialize + for<'r> Deserialize<'r> + Clone,
N: NodeIdT + Serialize + for<'r> Deserialize<'r> + Rand,
T: Contribution + Serialize + DeserializeOwned + Clone,
N: NodeIdT + Serialize + DeserializeOwned + Rand,
Q: TransactionQueue<T>,
{
/// Returns a new `QueueingHoneyBadgerBuilder` configured to use the node IDs and cryptographic
@ -140,7 +140,6 @@ where
/// Creates a new Queueing Honey Badger instance with an empty buffer.
pub fn build<R>(self, rng: R) -> QueueingHoneyBadgerWithStep<T, N, Q>
where
T: Contribution + Serialize + for<'r> Deserialize<'r>,
R: 'static + Rng + Send + Sync,
{
self.build_with_transactions(None, rng)
@ -156,7 +155,6 @@ where
) -> Result<QueueingHoneyBadgerWithStep<T, N, Q>>
where
TI: IntoIterator<Item = T>,
T: Contribution + Serialize + for<'r> Deserialize<'r>,
R: 'static + Rng + Send + Sync,
{
self.queue.extend(txs);
@ -175,12 +173,7 @@ where
/// queue.
#[derive(Derivative)]
#[derivative(Debug)]
pub struct QueueingHoneyBadger<T, N, Q>
where
T: Contribution + Serialize + for<'r> Deserialize<'r>,
N: NodeIdT + Serialize + for<'r> Deserialize<'r> + Rand,
Q: TransactionQueue<T>,
{
pub struct QueueingHoneyBadger<T, N: Rand, Q> {
/// The target number of transactions to be included in each batch.
batch_size: usize,
/// The internal `DynamicHoneyBadger` instance.
@ -196,8 +189,8 @@ pub type Step<T, N, Q> = ::Step<QueueingHoneyBadger<T, N, Q>>;
impl<T, N, Q> DistAlgorithm for QueueingHoneyBadger<T, N, Q>
where
T: Contribution + Serialize + for<'r> Deserialize<'r> + Clone,
N: NodeIdT + Serialize + for<'r> Deserialize<'r> + Rand,
T: Contribution + Serialize + DeserializeOwned + Clone,
N: NodeIdT + Serialize + DeserializeOwned + Rand,
Q: TransactionQueue<T>,
{
type NodeId = N;
@ -230,8 +223,8 @@ where
impl<T, N, Q> QueueingHoneyBadger<T, N, Q>
where
T: Contribution + Serialize + for<'r> Deserialize<'r> + Clone,
N: NodeIdT + Serialize + for<'r> Deserialize<'r> + Rand,
T: Contribution + Serialize + DeserializeOwned + Clone,
N: NodeIdT + Serialize + DeserializeOwned + Rand,
Q: TransactionQueue<T>,
{
/// Returns a new `QueueingHoneyBadgerBuilder` configured to use the node IDs and cryptographic