CCNPHVQCIGINWTLXCHOASGVWUPBZXFOLM2F7HTKMEA2DMFTOX7TAC QYDGYIZRNFRIQD7RUCY5YAN3F2THZA74E5UOHPIFWSULEJFAFVJQC HN6Z5DU4WYMAIOOSNVHLIIMNF6Q53TNJ7YC27SLKWNXVYCTACQKQC OP6SVMOD2GTQ7VNJ4E5KYFG4MIYA7HBMXJTADALMZH4PY7OQRMZQC LSQ6V7M66TEGLJ7QBLRVDX4E7UKJTDQTEXZOS3KGPGFKVXNLPKBQC OTWDDJE7TTE73D6BGF4ZN6BH2NFUFLPME2VJ3CPALH463UGWLEIQC H3FVSQIQGFCFKCPXVOSFHP4OSUOBBURJESCZNGQTNDAAD3WQSBEQC WS4ZQM4RMIHZ6XZKSDQJGHN5SSSWFL4H236USOPUA33S6RC53RFAC G4JEQLLX6Q7VVFVAEJZAVQXX33MQ36CSCYSMJ5NQM5VZ76DXKU6QC XEU2QVLCHPYOOD4TQIPEEVYOVSFMKFPLJYWEJYXYJAZ7S54KWDZAC KMT3MF5NLEQIPZLHCRYDGQ5EA46HJCG3C2ANEPMZGKGHDK77ADPAC ESUI5EUZUBDPHNN3APU33IFORYPYR6J3WEMEZG57FKF3EH66ZBHAC NXMFNPZ7VWJRLC3M5QJJVTICXCMGE24F3HVIZA7A7RLVMLQMLDVQC W26CFMAQOXMUK4ZOJMAN4SMBXMWFQHO7HCTEVW73FQSRMJZFGJIQC T73WR2BX2QDQ6APOREBXUKNH52FDLJNBGWPQUYB2TAF2PT7XCL2AC QEUTVAZ4F4EJXRDMWDMYXF6XEDMX7YPVG4IIXEKPIR3K54E5W5OAC 6UVFCERMGSGNRWCVC3GWO5HWV6MSWE433DXBJVC7KRPP6LLJLCSQC //!//! Moreover, two other traits can be used to store things on pages://! [`Storable`] is a simple trait that all `Sized + Ord` types//! without references can readily implement (the [`direct_repr!`]//! macro does that). For types containing references to pages//! allocated in the database, the comparison function can be//! customised. Moreover, these types must supply an iterator over//! these references, in order for reference-counting to work properly//! when the datastructures referencing these types are forked.//!//! Dynamically-sized types, or types that need to be represented in a//! dynamically-sized way, can use the [`UnsizedStorable`] format.
/// Representation of a mutable or shared page.
/// Representation of a mutable or shared page. This is an owned page/// (like `Vec` in Rust's std), but we do not know whether we can/// mutate it or not.////// The least-significant bit of the first byte of each page is 1 if/// and only if the page was allocated by the current transaction (and/// hence isn't visible to any other transaction, meaning we can write/// on it).
/// RCfn rc(&self, off: u64) -> Result<u64, Self::Error>;
/// Reference-counting. Since reference-counts are designed to be/// storable into B trees by external allocators, pages referenced/// once aren't stored, and hence are indistinguishable from pages/// that are never referenced. The default implementation returns/// 0.////// This has the extra benefit of requiring less disk space, and/// isn't more unsafe than storing the reference count, since we/// aren't supposed to hold a reference to a page with "logical/// RC" 0, so storing "1" for that page would be redundant anyway.fn rc(&self, _off: u64) -> Result<u64, Self::Error> {Ok(0)}
// Returns the new RC (0 if freed).
/// Same as [`decr_rc`], but for pages allocated by the current/// transaction. This is an important distinction, as pages/// allocated by the current transaction can be reused immediately/// after being freed.