pub struct Document(/* private fields */);Expand description
A sanitized HTML document.
The Document type is an opaque struct representing an HTML fragment that was sanitized by
ammonia. It can be converted to a String or written to a Write instance. This allows
users to avoid buffering the serialized representation to a String when desired.
This type is opaque to insulate the caller from breaking changes in the html5ever interface.
Note that this type wraps an html5ever DOM tree. ammonia does not support streaming, so
the complete fragment needs to be stored in memory during processing.
§Examples
use ammonia::Builder;
let input = "<!-- comments will be stripped -->This is an Ammonia example.";
let output = "This is an Ammonia example.";
let document = Builder::new()
    .clean(input);
assert_eq!(document.to_string(), output);Implementations§
source§impl Document
 
impl Document
sourcepub fn write_to<W>(&self, writer: W) -> Result<()>where
    W: Write,
 
pub fn write_to<W>(&self, writer: W) -> Result<()>where
    W: Write,
Serializes a Document instance to a writer.
This method writes the sanitized HTML to a Write instance, avoiding a buffering step.
To avoid consuming the writer, a mutable reference can be passed, like in the example below.
Note that the in-memory representation of Document is larger than the serialized
String.
§Examples
use ammonia::Builder;
let input = "Some <style></style>HTML here";
let expected = b"Some HTML here";
let document = Builder::new()
    .clean(input);
let mut sanitized = Vec::new();
document.write_to(&mut sanitized)
    .expect("Writing to a string should not fail (except on OOM)");
assert_eq!(sanitized, expected);Trait Implementations§
source§impl Display for Document
 
impl Display for Document
Convert a Document to stringified HTML.
Since Document implements Display, it can be converted to a String using the
standard ToString::to_string method. This is the simplest way to use ammonia.
§Examples
use ammonia::Builder;
let input = "Some <style></style>HTML here";
let output = "Some HTML here";
let document = Builder::new()
    .clean(input);
assert_eq!(document.to_string(), output);Auto Trait Implementations§
impl Freeze for Document
impl !RefUnwindSafe for Document
impl !Send for Document
impl !Sync for Document
impl Unpin for Document
impl !UnwindSafe for Document
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
    T: Clone,
 
impl<T> CloneToUninit for Twhere
    T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
 
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)