#![expect(clippy::todo, reason = "skeleton: #6833")]
use core::fmt;
use crate::level::Level;
use crate::span::Span;
pub trait KeyedArtifact {
const LEVEL: Level;
const SCHEMA_VERSION: u32;
fn feed_key(&self, sink: &mut KeySink);
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct ArtifactKey {
level: Level,
schema_version: u32,
hash: [u8; 16],
}
impl ArtifactKey {
#[must_use]
pub fn of<A: KeyedArtifact + ?Sized>(artifact: &A, block_start: u32) -> Self {
let _ = (artifact, block_start);
todo!()
}
#[must_use]
pub const fn level(&self) -> Level {
self.level
}
#[must_use]
pub const fn schema_version(&self) -> u32 {
self.schema_version
}
#[must_use]
pub const fn hash(&self) -> [u8; 16] {
self.hash
}
}
#[derive(Debug)]
pub struct KeySink {
block_start: u32,
}
impl KeySink {
#[must_use]
pub const fn block_start(&self) -> u32 {
self.block_start
}
pub fn feed_bytes(&mut self, bytes: &[u8]) {
let _ = bytes;
todo!()
}
pub fn feed_span(&mut self, span: Span) {
let _ = span;
todo!()
}
}
impl fmt::Write for KeySink {
fn write_str(&mut self, text: &str) -> fmt::Result {
self.feed_bytes(text.as_bytes());
Ok(())
}
}