use cola::EncodedReplica;
use serde::{Deserialize, Serialize};
use crate::Cursor;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct Document {
cursors: Vec<Cursor>,
replica: cola::EncodedReplica,
text: String,
}
impl Document {
#[inline(always)]
pub fn cursors(&self) -> impl ExactSizeIterator<Item = Cursor> + '_ {
self.cursors.iter().copied()
}
#[inline(always)]
pub(crate) fn new<S>(
cursors: Vec<Cursor>,
replica: EncodedReplica,
text: S,
) -> Self
where
S: Into<String>,
{
Self { cursors, replica, text: text.into() }
}
#[inline(always)]
pub fn replica(&self) -> &EncodedReplica {
&self.replica
}
#[inline(always)]
pub fn text(&self) -> &str {
&self.text
}
}