//! Async I/O wrappers built on Tokio.
use Path;
use crateinternal_error;
use crateResult;
/// Open a PDF from a filesystem path on Tokio's blocking pool.
///
/// ```
/// use std::path::PathBuf;
///
/// # fn main() -> Result<(), Box<dyn std::error::Error>> {
/// let fixture = PathBuf::from(env!("CARGO_MANIFEST_DIR"))
/// .join("tests/fixtures/sample.pdf");
/// let runtime = tokio::runtime::Builder::new_current_thread().build()?;
/// let doc = runtime.block_on(pdfluent::async_io::open(fixture))?;
/// assert_eq!(doc.page_count(), 1);
/// # Ok(())
/// # }
/// ```
pub async