Trait pretty::DocAllocator [−][src]
pub trait DocAllocator<'a, A = ()> { type Doc: Deref<Target = Doc<'a, Self::Doc, A>>; fn alloc(&'a self, _: Doc<'a, Self::Doc, A>) -> Self::Doc; fn nil(&'a self) -> DocBuilder<'a, Self, A> { ... } fn newline(&'a self) -> DocBuilder<'a, Self, A> { ... } fn space(&'a self) -> DocBuilder<'a, Self, A> { ... } fn as_string<U: ToString>(&'a self, data: U) -> DocBuilder<'a, Self, A> { ... } fn text<U: Into<Cow<'a, str>>>(&'a self, data: U) -> DocBuilder<'a, Self, A> { ... } fn concat<I>(&'a self, docs: I) -> DocBuilder<'a, Self, A>
where
I: IntoIterator,
I::Item: Into<Doc<'a, Self::Doc, A>>, { ... } fn intersperse<I, S>(
&'a self,
docs: I,
separator: S
) -> DocBuilder<'a, Self, A>
where
I: IntoIterator,
I::Item: Into<Doc<'a, Self::Doc, A>>,
S: Into<Doc<'a, Self::Doc, A>> + Clone, { ... } }
The DocAllocator
trait abstracts over a type which can allocate (pointers to) Doc
.
Associated Types
Required Methods
Provided Methods
fn nil(&'a self) -> DocBuilder<'a, Self, A>
Allocate an empty document.
fn newline(&'a self) -> DocBuilder<'a, Self, A>
Allocate a single newline.
fn space(&'a self) -> DocBuilder<'a, Self, A>
Allocate a single space.
fn as_string<U: ToString>(&'a self, data: U) -> DocBuilder<'a, Self, A>
Allocate a document containing the text t.to_string()
.
The given text must not contain line breaks.
fn text<U: Into<Cow<'a, str>>>(&'a self, data: U) -> DocBuilder<'a, Self, A>
Allocate a document containing the given text.
The given text must not contain line breaks.
fn concat<I>(&'a self, docs: I) -> DocBuilder<'a, Self, A> where
I: IntoIterator,
I::Item: Into<Doc<'a, Self::Doc, A>>,
I: IntoIterator,
I::Item: Into<Doc<'a, Self::Doc, A>>,
Allocate a document concatenating the given documents.
fn intersperse<I, S>(&'a self, docs: I, separator: S) -> DocBuilder<'a, Self, A> where
I: IntoIterator,
I::Item: Into<Doc<'a, Self::Doc, A>>,
S: Into<Doc<'a, Self::Doc, A>> + Clone,
I: IntoIterator,
I::Item: Into<Doc<'a, Self::Doc, A>>,
S: Into<Doc<'a, Self::Doc, A>> + Clone,
Allocate a document that intersperses the given separator S
between the given documents
[A, B, C, ..., Z]
, yielding [A, S, B, S, C, S, ..., S, Z]
.
Implementations on Foreign Types
impl<'a, D: ?Sized, A> DocAllocator<'a, A> for &'a D where
D: DocAllocator<'a, A>,
[src]
impl<'a, D: ?Sized, A> DocAllocator<'a, A> for &'a D where
D: DocAllocator<'a, A>,
type Doc = D::Doc
fn alloc(&'a self, doc: Doc<'a, Self::Doc, A>) -> Self::Doc
[src]
fn alloc(&'a self, doc: Doc<'a, Self::Doc, A>) -> Self::Doc
fn nil(&'a self) -> DocBuilder<'a, Self, A>
[src]
fn nil(&'a self) -> DocBuilder<'a, Self, A>
fn newline(&'a self) -> DocBuilder<'a, Self, A>
[src]
fn newline(&'a self) -> DocBuilder<'a, Self, A>
fn space(&'a self) -> DocBuilder<'a, Self, A>
[src]
fn space(&'a self) -> DocBuilder<'a, Self, A>
fn as_string<U: ToString>(&'a self, data: U) -> DocBuilder<'a, Self, A>
[src]
fn as_string<U: ToString>(&'a self, data: U) -> DocBuilder<'a, Self, A>
fn text<U: Into<Cow<'a, str>>>(&'a self, data: U) -> DocBuilder<'a, Self, A>
[src]
fn text<U: Into<Cow<'a, str>>>(&'a self, data: U) -> DocBuilder<'a, Self, A>
fn concat<I>(&'a self, docs: I) -> DocBuilder<'a, Self, A> where
I: IntoIterator,
I::Item: Into<Doc<'a, Self::Doc, A>>,
[src]
fn concat<I>(&'a self, docs: I) -> DocBuilder<'a, Self, A> where
I: IntoIterator,
I::Item: Into<Doc<'a, Self::Doc, A>>,
fn intersperse<I, S>(&'a self, docs: I, separator: S) -> DocBuilder<'a, Self, A> where
I: IntoIterator,
I::Item: Into<Doc<'a, Self::Doc, A>>,
S: Into<Doc<'a, Self::Doc, A>> + Clone,
[src]
fn intersperse<I, S>(&'a self, docs: I, separator: S) -> DocBuilder<'a, Self, A> where
I: IntoIterator,
I::Item: Into<Doc<'a, Self::Doc, A>>,
S: Into<Doc<'a, Self::Doc, A>> + Clone,