qiniu_upload_manager/data_partition_provider/
fixed.rs

1use super::{DataPartitionProvider, DataPartitionProviderFeedback, PartSize};
2use std::num::NonZeroU64;
3
4/// 固定分片大小提供者
5#[derive(Debug, Clone, Copy)]
6pub struct FixedDataPartitionProvider(NonZeroU64);
7
8impl Default for FixedDataPartitionProvider {
9    #[inline]
10    fn default() -> Self {
11        Self(PartSize::default().into())
12    }
13}
14
15impl FixedDataPartitionProvider {
16    /// 创建固定分片大小提供者
17    ///
18    /// 如果传入 `0` 将返回 [`None`]。
19    #[inline]
20    pub fn new(part_size: u64) -> Option<Self> {
21        NonZeroU64::new(part_size).map(Self::new_with_non_zero_part_size)
22    }
23
24    /// 创建固定分片大小提供者
25    ///
26    /// 提供 [`NonZeroU64`] 作为分片大小类型。
27    #[inline]
28    pub const fn new_with_non_zero_part_size(part_size: NonZeroU64) -> Self {
29        Self(part_size)
30    }
31
32    /// 获取固定分片大小
33    #[inline]
34    pub const fn fixed_part_size(&self) -> NonZeroU64 {
35        self.0
36    }
37}
38
39impl DataPartitionProvider for FixedDataPartitionProvider {
40    #[inline]
41    fn part_size(&self) -> PartSize {
42        self.0.into()
43    }
44
45    #[inline]
46    fn feedback(&self, _feedback: DataPartitionProviderFeedback<'_>) {}
47}
48
49impl From<NonZeroU64> for FixedDataPartitionProvider {
50    #[inline]
51    fn from(part_size: NonZeroU64) -> Self {
52        Self(part_size)
53    }
54}