浏览代码

changed everything to thiserror

master
Isabelle L. 5 年前
父节点
当前提交
b33738c7b8
共有 2 个文件被更改,包括 12 次插入4 次删除
  1. +11
    -3
      src/lib.rs
  2. +1
    -1
      src/message.rs

+ 11
- 3
src/lib.rs 查看文件

@@ -13,7 +13,6 @@
//! | `u64::MAX` | packet contents | //! | `u64::MAX` | packet contents |
//! //!


use anyhow::Result;
use futures_util::io::{AsyncReadExt, AsyncWriteExt}; use futures_util::io::{AsyncReadExt, AsyncWriteExt};
use ring::digest; use ring::digest;
use std::convert::TryInto; use std::convert::TryInto;
@@ -23,11 +22,13 @@ use thiserror::Error;
mod message; mod message;
pub use message::Message; pub use message::Message;


pub type Result<T> = std::result::Result<T, IlmpError>;

struct NetworkPacket(Vec<u8>); struct NetworkPacket(Vec<u8>);


/// a type of data that can be sent /// a type of data that can be sent
pub trait Sendable: Sized { pub trait Sendable: Sized {
fn to_packet(self) -> Result<Packet>;
fn to_packet(&self) -> Result<Packet>;
fn from_packet(packet: Packet) -> Result<Self>; fn from_packet(packet: Packet) -> Result<Self>;
} }


@@ -62,7 +63,7 @@ impl Packet {
} }
} }


fn to_network_packet(self) -> NetworkPacket {
fn to_network_packet(&self) -> NetworkPacket {
let mut contents: Vec<u8> = Vec::new(); let mut contents: Vec<u8> = Vec::new();


// write packet kind byte // write packet kind byte
@@ -121,6 +122,13 @@ impl PacketKind {
pub enum IlmpError { pub enum IlmpError {
#[error("checksum integrity check failed: (expected {expected:?} found {found:?})")] #[error("checksum integrity check failed: (expected {expected:?} found {found:?})")]
BadChecksumIntegrity { expected: Vec<u8>, found: Vec<u8> }, BadChecksumIntegrity { expected: Vec<u8>, found: Vec<u8> },
#[error("std::io error")]
// external error conversions
StdIo(#[from] std::io::Error),
#[error("serde_json error")]
SerdeJson(#[from] serde_json::error::Error),
#[error("string parsing error")]
StringParse(#[from] std::string::FromUtf8Error),
} }


/// reads a `Packet` from a stream /// reads a `Packet` from a stream


+ 1
- 1
src/message.rs 查看文件

@@ -29,7 +29,7 @@ impl Message {
} }


impl crate::Sendable for Message { impl crate::Sendable for Message {
fn to_packet(self) -> Result<Packet> {
fn to_packet(&self) -> Result<Packet> {
let contents: Vec<u8> = serde_json::to_string(&self)?.into_bytes(); let contents: Vec<u8> = serde_json::to_string(&self)?.into_bytes();
let checksum = digest::digest(&digest::SHA256, &contents).as_ref().to_vec(); let checksum = digest::digest(&digest::SHA256, &contents).as_ref().to_vec();
let kind = PacketKind::Message; let kind = PacketKind::Message;


正在加载...
取消
保存