1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
// This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. // // Copyright (c) DUSK NETWORK. All rights reserved. /// Trait to be implemented for the associated Error used in /// [`DeserializableSlice::from_slice`]. The function is called if the slice /// given is smaller than the mandatory size for the struct. pub trait BadLength { /// Invoked when a buffer of bad length is given to [`from_slice`] fn bad_length(found: usize, expected: usize) -> Self; } /// Trait to be implemented for the associated Error used in /// [`ParseHexStr::from_hex_str`]. /// The function is called if an invalid character is found in the string /// slice. pub trait InvalidChar { /// Invoked when a string slice with a non hex character is is give to /// [`ParseHexStr::from_hex_str`] fn invalid_char(ch: char, index: usize) -> Self; } /// Dusk Bytes operation error variants #[derive(Copy, Debug, Clone, Eq, Hash, Ord, PartialEq, PartialOrd)] pub enum Error { /// Generic error that can be returned in a [`Deserializable::from_bytes`] /// implementation InvalidData, /// Automatically returned from the default implementation of /// [`DeserializableSlice::from_slice`] if the slice given is smaller than /// the mandatory size for the struct. BadLength { /// The slice's length found: usize, /// The expected slice's length expected: usize, }, /// Automatically returned from the default implementation of /// [`ParseHexStr::from_hex_str`] if an invalid character is found in the /// string slice. InvalidChar { /// The invalid character found ch: char, /// The character's index index: usize, }, } impl BadLength for Error { fn bad_length(found: usize, expected: usize) -> Self { Self::BadLength { found, expected } } } impl InvalidChar for Error { fn invalid_char(ch: char, index: usize) -> Self { Self::InvalidChar { ch, index } } }