• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tari-project / tari / 17324214766

29 Aug 2025 12:47PM UTC coverage: 60.114% (-0.9%) from 61.055%
17324214766

push

github

web-flow
chore: update libsqlite3-sys (#7450)

No rush to merge. Just need to update this library so that we can use
more up to date crates in Tari Universe

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- Chores
- Upgraded SQLite-related dependencies to newer stable versions,
improving overall stability and compatibility across platforms.
- Enhances interoperability with newer SQLite runtimes and toolchains,
reducing potential integration friction.
- Minor configuration formatting cleanup to maintain consistency; no
functional behavior changes.
- Bug Fixes
- Indirect improvements from dependency updates may address underlying
reliability issues observed on certain environments.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

71474 of 118897 relevant lines covered (60.11%)

229495.14 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

73.24
/base_layer/common_types/src/types/fixed_hash.rs
1
//  Copyright 2022. The Tari Project
2
//
3
//  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
4
//  following conditions are met:
5
//
6
//  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following
7
//  disclaimer.
8
//
9
//  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
10
//  following disclaimer in the documentation and/or other materials provided with the distribution.
11
//
12
//  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote
13
//  products derived from this software without specific prior written permission.
14
//
15
//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
16
//  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17
//  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18
//  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19
//  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
20
//  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
21
//  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22

23
use std::{
24
    convert::TryFrom,
25
    fmt::{Display, Formatter},
26
    ops::{Deref, DerefMut},
27
};
28

29
use borsh::{BorshDeserialize, BorshSerialize};
30
use digest::{consts::U32, generic_array};
31
use serde::{Deserialize, Serialize};
32
use tari_utilities::hex::{Hex, HexError};
33
use utoipa::ToSchema;
34

35
const ZERO_HASH: [u8; FixedHash::byte_size()] = [0u8; FixedHash::byte_size()];
36

37
#[derive(thiserror::Error, Debug)]
38
#[error("Invalid size")]
39
pub struct FixedHashSizeError;
40

41
#[derive(
42
    Clone,
43
    Copy,
44
    PartialEq,
45
    Eq,
46
    PartialOrd,
47
    Ord,
48
    Debug,
49
    Default,
50
    Hash,
51
    Deserialize,
8,671✔
52
    Serialize,
53
    BorshSerialize,
×
54
    BorshDeserialize,
×
55
    ToSchema,
×
56
)]
57
#[serde(transparent)]
58
pub struct FixedHash([u8; FixedHash::byte_size()]);
59

60
impl FixedHash {
61
    pub const fn new(hash: [u8; FixedHash::byte_size()]) -> Self {
×
62
        Self(hash)
×
63
    }
×
64

65
    pub const fn byte_size() -> usize {
1,134✔
66
        32
1,134✔
67
    }
1,134✔
68

69
    pub const fn zero() -> Self {
9,695✔
70
        Self(ZERO_HASH)
9,695✔
71
    }
9,695✔
72

73
    pub const fn into_array(self) -> [u8; 32] {
4✔
74
        self.0
4✔
75
    }
4✔
76

77
    pub fn as_slice(&self) -> &[u8] {
27,850✔
78
        &self.0
27,850✔
79
    }
27,850✔
80
}
81

82
impl From<[u8; FixedHash::byte_size()]> for FixedHash {
83
    fn from(hash: [u8; FixedHash::byte_size()]) -> Self {
12,187✔
84
        Self(hash)
12,187✔
85
    }
12,187✔
86
}
87

88
impl TryFrom<Vec<u8>> for FixedHash {
89
    type Error = FixedHashSizeError;
90

91
    fn try_from(value: Vec<u8>) -> Result<Self, Self::Error> {
409✔
92
        TryFrom::try_from(value.as_slice())
409✔
93
    }
409✔
94
}
95

96
impl TryFrom<&[u8]> for FixedHash {
97
    type Error = FixedHashSizeError;
98

99
    fn try_from(bytes: &[u8]) -> Result<Self, Self::Error> {
526✔
100
        if bytes.len() != FixedHash::byte_size() {
526✔
101
            return Err(FixedHashSizeError);
×
102
        }
526✔
103

526✔
104
        let mut buf = [0u8; FixedHash::byte_size()];
526✔
105
        buf.copy_from_slice(bytes);
526✔
106
        Ok(Self(buf))
526✔
107
    }
526✔
108
}
109

110
impl From<generic_array::GenericArray<u8, U32>> for FixedHash {
111
    fn from(hash: generic_array::GenericArray<u8, U32>) -> Self {
54,049✔
112
        Self(hash.into())
54,049✔
113
    }
54,049✔
114
}
115

116
impl PartialEq<[u8]> for FixedHash {
117
    fn eq(&self, other: &[u8]) -> bool {
×
118
        self.0[..].eq(other)
×
119
    }
×
120
}
121

122
impl PartialEq<FixedHash> for [u8] {
123
    fn eq(&self, other: &FixedHash) -> bool {
×
124
        self[..].eq(&other.0)
×
125
    }
×
126
}
127

128
impl PartialEq<Vec<u8>> for FixedHash {
129
    fn eq(&self, other: &Vec<u8>) -> bool {
×
130
        self == other.as_slice()
×
131
    }
×
132
}
133
impl PartialEq<FixedHash> for Vec<u8> {
134
    fn eq(&self, other: &FixedHash) -> bool {
×
135
        self == other.as_slice()
×
136
    }
×
137
}
138

139
impl AsRef<[u8]> for FixedHash {
140
    fn as_ref(&self) -> &[u8] {
1,688✔
141
        self.as_slice()
1,688✔
142
    }
1,688✔
143
}
144

145
impl Hex for FixedHash {
146
    fn from_hex(hex: &str) -> Result<Self, HexError>
593✔
147
    where Self: Sized {
593✔
148
        let hash = <[u8; FixedHash::byte_size()] as Hex>::from_hex(hex)?;
593✔
149
        Ok(Self(hash))
593✔
150
    }
593✔
151

152
    fn to_hex(&self) -> String {
122✔
153
        self.0.to_hex()
122✔
154
    }
122✔
155
}
156

157
impl Deref for FixedHash {
158
    type Target = [u8; FixedHash::byte_size()];
159

160
    fn deref(&self) -> &Self::Target {
14,868✔
161
        &self.0
14,868✔
162
    }
14,868✔
163
}
164

165
impl DerefMut for FixedHash {
166
    fn deref_mut(&mut self) -> &mut Self::Target {
1✔
167
        &mut self.0
1✔
168
    }
1✔
169
}
170

171
impl Display for FixedHash {
172
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
53✔
173
        for b in self.0 {
1,749✔
174
            write!(f, "{b:02x}")?;
1,696✔
175
        }
176
        Ok(())
53✔
177
    }
53✔
178
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc