diff --git a/dev/implementors/core/iter/traits/iterator/trait.Iterator.js b/dev/implementors/core/iter/traits/iterator/trait.Iterator.js index 48a9a9259..0509d2e05 100644 --- a/dev/implementors/core/iter/traits/iterator/trait.Iterator.js +++ b/dev/implementors/core/iter/traits/iterator/trait.Iterator.js @@ -1,4 +1,4 @@ (function() {var implementors = {}; implementors["uu_numfmt"] = [{"text":"impl<'a> Iterator for WhitespaceSplitter<'a>","synthetic":false,"types":["uu_numfmt::format::WhitespaceSplitter"]}]; -implementors["uucore"] = [{"text":"impl Iterator for UtmpxIter","synthetic":false,"types":["uucore::features::utmpx::UtmpxIter"]}]; +implementors["uucore"] = [{"text":"impl<B: BufRead> Iterator for Lines<B>","synthetic":false,"types":["uucore::features::lines::Lines"]},{"text":"impl Iterator for UtmpxIter","synthetic":false,"types":["uucore::features::utmpx::UtmpxIter"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/dev/implementors/core/marker/trait.Freeze.js b/dev/implementors/core/marker/trait.Freeze.js index d9de648d8..543a559dd 100644 --- a/dev/implementors/core/marker/trait.Freeze.js +++ b/dev/implementors/core/marker/trait.Freeze.js @@ -13,5 +13,5 @@ implementors["uu_nl"] = [{"text":"impl Freeze for NumfmtError","synthetic":true,"types":["uu_numfmt::errors::NumfmtError"]},{"text":"impl<'a> Freeze for WhitespaceSplitter<'a>","synthetic":true,"types":["uu_numfmt::format::WhitespaceSplitter"]},{"text":"impl Freeze for TransformOptions","synthetic":true,"types":["uu_numfmt::options::TransformOptions"]},{"text":"impl Freeze for NumfmtOptions","synthetic":true,"types":["uu_numfmt::options::NumfmtOptions"]},{"text":"impl Freeze for RoundMethod","synthetic":true,"types":["uu_numfmt::options::RoundMethod"]}]; implementors["uu_sort"] = [{"text":"impl Freeze for Output","synthetic":true,"types":["uu_sort::Output"]},{"text":"impl Freeze for GlobalSettings","synthetic":true,"types":["uu_sort::GlobalSettings"]},{"text":"impl<'a> Freeze for Line<'a>","synthetic":true,"types":["uu_sort::Line"]},{"text":"impl Freeze for GeneralF64ParseResult","synthetic":true,"types":["uu_sort::GeneralF64ParseResult"]}]; implementors["uu_stat"] = [{"text":"impl Freeze for OutputType","synthetic":true,"types":["uu_stat::OutputType"]},{"text":"impl Freeze for Token","synthetic":true,"types":["uu_stat::Token"]},{"text":"impl Freeze for Stater","synthetic":true,"types":["uu_stat::Stater"]}]; -implementors["uucore"] = [{"text":"impl Freeze for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Freeze for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Freeze for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Freeze for Data<R> where
    R: Freeze, 
","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Freeze for FileInformation","synthetic":true,"types":["uucore::features::fs::FileInformation"]},{"text":"impl Freeze for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Freeze for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Freeze for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Freeze for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl Freeze for Memo","synthetic":true,"types":["uucore::features::memo::Memo"]},{"text":"impl<T> Freeze for RingBuffer<T>","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl Freeze for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl Freeze for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Freeze for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Freeze for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Freeze for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Freeze for TraverseSymlinks","synthetic":true,"types":["uucore::features::perms::TraverseSymlinks"]},{"text":"impl Freeze for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Freeze for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Freeze for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl Freeze for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Freeze for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Freeze for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl Freeze for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Freeze for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Freeze for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Freeze for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Freeze for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Freeze for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Freeze for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Freeze for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}]; +implementors["uucore"] = [{"text":"impl Freeze for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Freeze for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Freeze for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Freeze for Data<R> where
    R: Freeze, 
","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Freeze for FileInformation","synthetic":true,"types":["uucore::features::fs::FileInformation"]},{"text":"impl Freeze for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Freeze for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Freeze for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Freeze for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<B> Freeze for Lines<B> where
    B: Freeze, 
","synthetic":true,"types":["uucore::features::lines::Lines"]},{"text":"impl Freeze for Memo","synthetic":true,"types":["uucore::features::memo::Memo"]},{"text":"impl<T> Freeze for RingBuffer<T>","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl Freeze for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl Freeze for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Freeze for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Freeze for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Freeze for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Freeze for TraverseSymlinks","synthetic":true,"types":["uucore::features::perms::TraverseSymlinks"]},{"text":"impl Freeze for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Freeze for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Freeze for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl Freeze for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Freeze for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Freeze for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl Freeze for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Freeze for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Freeze for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Freeze for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Freeze for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Freeze for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Freeze for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Freeze for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/dev/implementors/core/marker/trait.Send.js b/dev/implementors/core/marker/trait.Send.js index 4f58ad891..04d8a3a76 100644 --- a/dev/implementors/core/marker/trait.Send.js +++ b/dev/implementors/core/marker/trait.Send.js @@ -13,5 +13,5 @@ implementors["uu_nl"] = [{"text":"impl Send for NumfmtError","synthetic":true,"types":["uu_numfmt::errors::NumfmtError"]},{"text":"impl<'a> Send for WhitespaceSplitter<'a>","synthetic":true,"types":["uu_numfmt::format::WhitespaceSplitter"]},{"text":"impl Send for TransformOptions","synthetic":true,"types":["uu_numfmt::options::TransformOptions"]},{"text":"impl Send for NumfmtOptions","synthetic":true,"types":["uu_numfmt::options::NumfmtOptions"]},{"text":"impl Send for RoundMethod","synthetic":true,"types":["uu_numfmt::options::RoundMethod"]}]; implementors["uu_sort"] = [{"text":"impl Send for Output","synthetic":true,"types":["uu_sort::Output"]},{"text":"impl Send for GlobalSettings","synthetic":true,"types":["uu_sort::GlobalSettings"]},{"text":"impl<'a> Send for Line<'a>","synthetic":true,"types":["uu_sort::Line"]},{"text":"impl Send for GeneralF64ParseResult","synthetic":true,"types":["uu_sort::GeneralF64ParseResult"]}]; implementors["uu_stat"] = [{"text":"impl Send for OutputType","synthetic":true,"types":["uu_stat::OutputType"]},{"text":"impl Send for Token","synthetic":true,"types":["uu_stat::Token"]},{"text":"impl Send for Stater","synthetic":true,"types":["uu_stat::Stater"]}]; -implementors["uucore"] = [{"text":"impl Send for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Send for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Send for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Send for Data<R> where
    R: Send
","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Send for FileInformation","synthetic":true,"types":["uucore::features::fs::FileInformation"]},{"text":"impl Send for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Send for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Send for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Send for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl !Send for Memo","synthetic":true,"types":["uucore::features::memo::Memo"]},{"text":"impl<T> Send for RingBuffer<T> where
    T: Send
","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl Send for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl Send for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Send for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Send for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Send for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Send for TraverseSymlinks","synthetic":true,"types":["uucore::features::perms::TraverseSymlinks"]},{"text":"impl Send for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Send for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Send for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl !Send for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Send for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Send for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl Send for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Send for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Send for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Send for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Send for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Send for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Send for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Send for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}]; +implementors["uucore"] = [{"text":"impl Send for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Send for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Send for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Send for Data<R> where
    R: Send
","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Send for FileInformation","synthetic":true,"types":["uucore::features::fs::FileInformation"]},{"text":"impl Send for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Send for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Send for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Send for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<B> Send for Lines<B> where
    B: Send
","synthetic":true,"types":["uucore::features::lines::Lines"]},{"text":"impl !Send for Memo","synthetic":true,"types":["uucore::features::memo::Memo"]},{"text":"impl<T> Send for RingBuffer<T> where
    T: Send
","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl Send for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl Send for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Send for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Send for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Send for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Send for TraverseSymlinks","synthetic":true,"types":["uucore::features::perms::TraverseSymlinks"]},{"text":"impl Send for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Send for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Send for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl !Send for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Send for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Send for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl Send for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Send for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Send for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Send for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Send for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Send for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Send for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Send for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/dev/implementors/core/marker/trait.Sync.js b/dev/implementors/core/marker/trait.Sync.js index eadd230c5..930b9617b 100644 --- a/dev/implementors/core/marker/trait.Sync.js +++ b/dev/implementors/core/marker/trait.Sync.js @@ -13,5 +13,5 @@ implementors["uu_nl"] = [{"text":"impl Sync for NumfmtError","synthetic":true,"types":["uu_numfmt::errors::NumfmtError"]},{"text":"impl<'a> Sync for WhitespaceSplitter<'a>","synthetic":true,"types":["uu_numfmt::format::WhitespaceSplitter"]},{"text":"impl Sync for TransformOptions","synthetic":true,"types":["uu_numfmt::options::TransformOptions"]},{"text":"impl Sync for NumfmtOptions","synthetic":true,"types":["uu_numfmt::options::NumfmtOptions"]},{"text":"impl Sync for RoundMethod","synthetic":true,"types":["uu_numfmt::options::RoundMethod"]}]; implementors["uu_sort"] = [{"text":"impl Sync for Output","synthetic":true,"types":["uu_sort::Output"]},{"text":"impl Sync for GlobalSettings","synthetic":true,"types":["uu_sort::GlobalSettings"]},{"text":"impl<'a> Sync for Line<'a>","synthetic":true,"types":["uu_sort::Line"]},{"text":"impl Sync for GeneralF64ParseResult","synthetic":true,"types":["uu_sort::GeneralF64ParseResult"]}]; implementors["uu_stat"] = [{"text":"impl Sync for OutputType","synthetic":true,"types":["uu_stat::OutputType"]},{"text":"impl Sync for Token","synthetic":true,"types":["uu_stat::Token"]},{"text":"impl Sync for Stater","synthetic":true,"types":["uu_stat::Stater"]}]; -implementors["uucore"] = [{"text":"impl Sync for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Sync for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Sync for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Sync for Data<R> where
    R: Sync
","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Sync for FileInformation","synthetic":true,"types":["uucore::features::fs::FileInformation"]},{"text":"impl Sync for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Sync for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Sync for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Sync for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl !Sync for Memo","synthetic":true,"types":["uucore::features::memo::Memo"]},{"text":"impl<T> Sync for RingBuffer<T> where
    T: Sync
","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl Sync for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl Sync for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Sync for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Sync for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Sync for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Sync for TraverseSymlinks","synthetic":true,"types":["uucore::features::perms::TraverseSymlinks"]},{"text":"impl Sync for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Sync for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Sync for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl !Sync for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Sync for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Sync for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl Sync for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Sync for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Sync for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Sync for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Sync for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Sync for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Sync for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Sync for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}]; +implementors["uucore"] = [{"text":"impl Sync for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Sync for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Sync for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Sync for Data<R> where
    R: Sync
","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Sync for FileInformation","synthetic":true,"types":["uucore::features::fs::FileInformation"]},{"text":"impl Sync for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Sync for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Sync for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Sync for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<B> Sync for Lines<B> where
    B: Sync
","synthetic":true,"types":["uucore::features::lines::Lines"]},{"text":"impl !Sync for Memo","synthetic":true,"types":["uucore::features::memo::Memo"]},{"text":"impl<T> Sync for RingBuffer<T> where
    T: Sync
","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl Sync for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl Sync for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Sync for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Sync for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Sync for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Sync for TraverseSymlinks","synthetic":true,"types":["uucore::features::perms::TraverseSymlinks"]},{"text":"impl Sync for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Sync for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Sync for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl !Sync for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Sync for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Sync for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl Sync for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Sync for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Sync for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Sync for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Sync for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Sync for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Sync for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Sync for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/dev/implementors/core/marker/trait.Unpin.js b/dev/implementors/core/marker/trait.Unpin.js index 2345c4aaa..ceb2198f0 100644 --- a/dev/implementors/core/marker/trait.Unpin.js +++ b/dev/implementors/core/marker/trait.Unpin.js @@ -13,5 +13,5 @@ implementors["uu_nl"] = [{"text":"impl Unpin for NumfmtError","synthetic":true,"types":["uu_numfmt::errors::NumfmtError"]},{"text":"impl<'a> Unpin for WhitespaceSplitter<'a>","synthetic":true,"types":["uu_numfmt::format::WhitespaceSplitter"]},{"text":"impl Unpin for TransformOptions","synthetic":true,"types":["uu_numfmt::options::TransformOptions"]},{"text":"impl Unpin for NumfmtOptions","synthetic":true,"types":["uu_numfmt::options::NumfmtOptions"]},{"text":"impl Unpin for RoundMethod","synthetic":true,"types":["uu_numfmt::options::RoundMethod"]}]; implementors["uu_sort"] = [{"text":"impl Unpin for Output","synthetic":true,"types":["uu_sort::Output"]},{"text":"impl Unpin for GlobalSettings","synthetic":true,"types":["uu_sort::GlobalSettings"]},{"text":"impl<'a> Unpin for Line<'a>","synthetic":true,"types":["uu_sort::Line"]},{"text":"impl Unpin for GeneralF64ParseResult","synthetic":true,"types":["uu_sort::GeneralF64ParseResult"]}]; implementors["uu_stat"] = [{"text":"impl Unpin for OutputType","synthetic":true,"types":["uu_stat::OutputType"]},{"text":"impl Unpin for Token","synthetic":true,"types":["uu_stat::Token"]},{"text":"impl Unpin for Stater","synthetic":true,"types":["uu_stat::Stater"]}]; -implementors["uucore"] = [{"text":"impl Unpin for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Unpin for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Unpin for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Unpin for Data<R> where
    R: Unpin
","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Unpin for FileInformation","synthetic":true,"types":["uucore::features::fs::FileInformation"]},{"text":"impl Unpin for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Unpin for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Unpin for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Unpin for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl Unpin for Memo","synthetic":true,"types":["uucore::features::memo::Memo"]},{"text":"impl<T> Unpin for RingBuffer<T> where
    T: Unpin
","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl Unpin for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl Unpin for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Unpin for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Unpin for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Unpin for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Unpin for TraverseSymlinks","synthetic":true,"types":["uucore::features::perms::TraverseSymlinks"]},{"text":"impl Unpin for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Unpin for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Unpin for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl Unpin for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Unpin for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Unpin for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl Unpin for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Unpin for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Unpin for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Unpin for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Unpin for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Unpin for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Unpin for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Unpin for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}]; +implementors["uucore"] = [{"text":"impl Unpin for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl Unpin for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl Unpin for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> Unpin for Data<R> where
    R: Unpin
","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl Unpin for FileInformation","synthetic":true,"types":["uucore::features::fs::FileInformation"]},{"text":"impl Unpin for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl Unpin for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl Unpin for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl Unpin for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<B> Unpin for Lines<B> where
    B: Unpin
","synthetic":true,"types":["uucore::features::lines::Lines"]},{"text":"impl Unpin for Memo","synthetic":true,"types":["uucore::features::memo::Memo"]},{"text":"impl<T> Unpin for RingBuffer<T> where
    T: Unpin
","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl Unpin for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl Unpin for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl Unpin for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl Unpin for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl Unpin for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl Unpin for TraverseSymlinks","synthetic":true,"types":["uucore::features::perms::TraverseSymlinks"]},{"text":"impl Unpin for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl Unpin for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl Unpin for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl Unpin for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl Unpin for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl Unpin for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl Unpin for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl Unpin for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl Unpin for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl Unpin for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl Unpin for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl Unpin for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl Unpin for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl Unpin for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/dev/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/dev/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js index f00b2404f..450f60177 100644 --- a/dev/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/dev/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -13,5 +13,5 @@ implementors["uu_nl"] = [{"text":"impl RefUnwindSafe for NumfmtError","synthetic":true,"types":["uu_numfmt::errors::NumfmtError"]},{"text":"impl<'a> RefUnwindSafe for WhitespaceSplitter<'a>","synthetic":true,"types":["uu_numfmt::format::WhitespaceSplitter"]},{"text":"impl RefUnwindSafe for TransformOptions","synthetic":true,"types":["uu_numfmt::options::TransformOptions"]},{"text":"impl RefUnwindSafe for NumfmtOptions","synthetic":true,"types":["uu_numfmt::options::NumfmtOptions"]},{"text":"impl RefUnwindSafe for RoundMethod","synthetic":true,"types":["uu_numfmt::options::RoundMethod"]}]; implementors["uu_sort"] = [{"text":"impl RefUnwindSafe for Output","synthetic":true,"types":["uu_sort::Output"]},{"text":"impl RefUnwindSafe for GlobalSettings","synthetic":true,"types":["uu_sort::GlobalSettings"]},{"text":"impl<'a> RefUnwindSafe for Line<'a>","synthetic":true,"types":["uu_sort::Line"]},{"text":"impl RefUnwindSafe for GeneralF64ParseResult","synthetic":true,"types":["uu_sort::GeneralF64ParseResult"]}]; implementors["uu_stat"] = [{"text":"impl RefUnwindSafe for OutputType","synthetic":true,"types":["uu_stat::OutputType"]},{"text":"impl RefUnwindSafe for Token","synthetic":true,"types":["uu_stat::Token"]},{"text":"impl RefUnwindSafe for Stater","synthetic":true,"types":["uu_stat::Stater"]}]; -implementors["uucore"] = [{"text":"impl !RefUnwindSafe for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl RefUnwindSafe for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl RefUnwindSafe for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> RefUnwindSafe for Data<R> where
    R: RefUnwindSafe
","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl RefUnwindSafe for FileInformation","synthetic":true,"types":["uucore::features::fs::FileInformation"]},{"text":"impl RefUnwindSafe for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl RefUnwindSafe for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl RefUnwindSafe for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl RefUnwindSafe for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl !RefUnwindSafe for Memo","synthetic":true,"types":["uucore::features::memo::Memo"]},{"text":"impl<T> RefUnwindSafe for RingBuffer<T> where
    T: RefUnwindSafe
","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl RefUnwindSafe for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl RefUnwindSafe for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl RefUnwindSafe for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl RefUnwindSafe for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl RefUnwindSafe for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl RefUnwindSafe for TraverseSymlinks","synthetic":true,"types":["uucore::features::perms::TraverseSymlinks"]},{"text":"impl RefUnwindSafe for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl RefUnwindSafe for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl RefUnwindSafe for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl RefUnwindSafe for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl RefUnwindSafe for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl RefUnwindSafe for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl RefUnwindSafe for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl RefUnwindSafe for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl !RefUnwindSafe for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl RefUnwindSafe for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl RefUnwindSafe for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl RefUnwindSafe for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl RefUnwindSafe for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl RefUnwindSafe for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}]; +implementors["uucore"] = [{"text":"impl !RefUnwindSafe for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl RefUnwindSafe for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl RefUnwindSafe for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> RefUnwindSafe for Data<R> where
    R: RefUnwindSafe
","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl RefUnwindSafe for FileInformation","synthetic":true,"types":["uucore::features::fs::FileInformation"]},{"text":"impl RefUnwindSafe for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl RefUnwindSafe for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl RefUnwindSafe for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl RefUnwindSafe for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<B> RefUnwindSafe for Lines<B> where
    B: RefUnwindSafe
","synthetic":true,"types":["uucore::features::lines::Lines"]},{"text":"impl !RefUnwindSafe for Memo","synthetic":true,"types":["uucore::features::memo::Memo"]},{"text":"impl<T> RefUnwindSafe for RingBuffer<T> where
    T: RefUnwindSafe
","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl RefUnwindSafe for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl RefUnwindSafe for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl RefUnwindSafe for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl RefUnwindSafe for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl RefUnwindSafe for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl RefUnwindSafe for TraverseSymlinks","synthetic":true,"types":["uucore::features::perms::TraverseSymlinks"]},{"text":"impl RefUnwindSafe for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl RefUnwindSafe for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl RefUnwindSafe for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl RefUnwindSafe for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl RefUnwindSafe for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl RefUnwindSafe for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl RefUnwindSafe for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl RefUnwindSafe for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl !RefUnwindSafe for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl RefUnwindSafe for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl RefUnwindSafe for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl RefUnwindSafe for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl RefUnwindSafe for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl RefUnwindSafe for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/dev/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/dev/implementors/core/panic/unwind_safe/trait.UnwindSafe.js index 2b4453e9c..62c27cf84 100644 --- a/dev/implementors/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/dev/implementors/core/panic/unwind_safe/trait.UnwindSafe.js @@ -13,5 +13,5 @@ implementors["uu_nl"] = [{"text":"impl UnwindSafe for NumfmtError","synthetic":true,"types":["uu_numfmt::errors::NumfmtError"]},{"text":"impl<'a> UnwindSafe for WhitespaceSplitter<'a>","synthetic":true,"types":["uu_numfmt::format::WhitespaceSplitter"]},{"text":"impl UnwindSafe for TransformOptions","synthetic":true,"types":["uu_numfmt::options::TransformOptions"]},{"text":"impl UnwindSafe for NumfmtOptions","synthetic":true,"types":["uu_numfmt::options::NumfmtOptions"]},{"text":"impl UnwindSafe for RoundMethod","synthetic":true,"types":["uu_numfmt::options::RoundMethod"]}]; implementors["uu_sort"] = [{"text":"impl UnwindSafe for Output","synthetic":true,"types":["uu_sort::Output"]},{"text":"impl UnwindSafe for GlobalSettings","synthetic":true,"types":["uu_sort::GlobalSettings"]},{"text":"impl<'a> UnwindSafe for Line<'a>","synthetic":true,"types":["uu_sort::Line"]},{"text":"impl UnwindSafe for GeneralF64ParseResult","synthetic":true,"types":["uu_sort::GeneralF64ParseResult"]}]; implementors["uu_stat"] = [{"text":"impl UnwindSafe for OutputType","synthetic":true,"types":["uu_stat::OutputType"]},{"text":"impl UnwindSafe for Token","synthetic":true,"types":["uu_stat::Token"]},{"text":"impl UnwindSafe for Stater","synthetic":true,"types":["uu_stat::Stater"]}]; -implementors["uucore"] = [{"text":"impl !UnwindSafe for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl UnwindSafe for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl UnwindSafe for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> UnwindSafe for Data<R> where
    R: UnwindSafe
","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl UnwindSafe for FileInformation","synthetic":true,"types":["uucore::features::fs::FileInformation"]},{"text":"impl UnwindSafe for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl UnwindSafe for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl UnwindSafe for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl UnwindSafe for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl !UnwindSafe for Memo","synthetic":true,"types":["uucore::features::memo::Memo"]},{"text":"impl<T> UnwindSafe for RingBuffer<T> where
    T: UnwindSafe
","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl UnwindSafe for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl UnwindSafe for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl UnwindSafe for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl UnwindSafe for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl UnwindSafe for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl UnwindSafe for TraverseSymlinks","synthetic":true,"types":["uucore::features::perms::TraverseSymlinks"]},{"text":"impl UnwindSafe for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl UnwindSafe for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl UnwindSafe for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl UnwindSafe for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl UnwindSafe for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl UnwindSafe for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl UnwindSafe for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl UnwindSafe for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl !UnwindSafe for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl UnwindSafe for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl UnwindSafe for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl UnwindSafe for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl UnwindSafe for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl UnwindSafe for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}]; +implementors["uucore"] = [{"text":"impl !UnwindSafe for DecodeError","synthetic":true,"types":["uucore::features::encoding::DecodeError"]},{"text":"impl UnwindSafe for EncodeError","synthetic":true,"types":["uucore::features::encoding::EncodeError"]},{"text":"impl UnwindSafe for Format","synthetic":true,"types":["uucore::features::encoding::Format"]},{"text":"impl<R> UnwindSafe for Data<R> where
    R: UnwindSafe
","synthetic":true,"types":["uucore::features::encoding::Data"]},{"text":"impl UnwindSafe for FileInformation","synthetic":true,"types":["uucore::features::fs::FileInformation"]},{"text":"impl UnwindSafe for MissingHandling","synthetic":true,"types":["uucore::features::fs::MissingHandling"]},{"text":"impl UnwindSafe for ResolveMode","synthetic":true,"types":["uucore::features::fs::ResolveMode"]},{"text":"impl UnwindSafe for MountInfo","synthetic":true,"types":["uucore::features::fsext::MountInfo"]},{"text":"impl UnwindSafe for FsUsage","synthetic":true,"types":["uucore::features::fsext::FsUsage"]},{"text":"impl<B> UnwindSafe for Lines<B> where
    B: UnwindSafe
","synthetic":true,"types":["uucore::features::lines::Lines"]},{"text":"impl !UnwindSafe for Memo","synthetic":true,"types":["uucore::features::memo::Memo"]},{"text":"impl<T> UnwindSafe for RingBuffer<T> where
    T: UnwindSafe
","synthetic":true,"types":["uucore::features::ringbuffer::RingBuffer"]},{"text":"impl UnwindSafe for Passwd","synthetic":true,"types":["uucore::features::entries::Passwd"]},{"text":"impl UnwindSafe for Group","synthetic":true,"types":["uucore::features::entries::Group"]},{"text":"impl UnwindSafe for VerbosityLevel","synthetic":true,"types":["uucore::features::perms::VerbosityLevel"]},{"text":"impl UnwindSafe for Verbosity","synthetic":true,"types":["uucore::features::perms::Verbosity"]},{"text":"impl UnwindSafe for IfFrom","synthetic":true,"types":["uucore::features::perms::IfFrom"]},{"text":"impl UnwindSafe for TraverseSymlinks","synthetic":true,"types":["uucore::features::perms::TraverseSymlinks"]},{"text":"impl UnwindSafe for ChownExecutor","synthetic":true,"types":["uucore::features::perms::ChownExecutor"]},{"text":"impl UnwindSafe for ExitStatus","synthetic":true,"types":["uucore::features::process::ExitStatus"]},{"text":"impl UnwindSafe for Utmpx","synthetic":true,"types":["uucore::features::utmpx::Utmpx"]},{"text":"impl UnwindSafe for UtmpxIter","synthetic":true,"types":["uucore::features::utmpx::UtmpxIter"]},{"text":"impl UnwindSafe for BackupMode","synthetic":true,"types":["uucore::mods::backup_control::BackupMode"]},{"text":"impl UnwindSafe for BackupError","synthetic":true,"types":["uucore::mods::backup_control::BackupError"]},{"text":"impl UnwindSafe for USimpleError","synthetic":true,"types":["uucore::mods::error::USimpleError"]},{"text":"impl UnwindSafe for UUsageError","synthetic":true,"types":["uucore::mods::error::UUsageError"]},{"text":"impl !UnwindSafe for UIoError","synthetic":true,"types":["uucore::mods::error::UIoError"]},{"text":"impl UnwindSafe for ExitCode","synthetic":true,"types":["uucore::mods::error::ExitCode"]},{"text":"impl UnwindSafe for Range","synthetic":true,"types":["uucore::mods::ranges::Range"]},{"text":"impl UnwindSafe for ParseSizeError","synthetic":true,"types":["uucore::parser::parse_size::ParseSizeError"]},{"text":"impl UnwindSafe for InvalidEncodingHandling","synthetic":true,"types":["uucore::InvalidEncodingHandling"]},{"text":"impl UnwindSafe for ConversionResult","synthetic":true,"types":["uucore::ConversionResult"]}]; if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/dev/search-index.js b/dev/search-index.js index c8b253bf1..3498b4848 100644 --- a/dev/search-index.js +++ b/dev/search-index.js @@ -104,9 +104,9 @@ var searchIndex = JSON.parse('{\ "uu_basenc":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_basenc",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\ "uu_cat":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_cat",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\ "uu_chcon":{"doc":"","t":[0,5,5,7,7,7,7,7,7,7,0,0,0,7,7,7,7,7,7,7],"n":["options","uu_app","uumain","RANGE","RECURSIVE","REFERENCE","ROLE","TYPE","USER","VERBOSE","dereference","preserve_root","sym_links","DEREFERENCE","NO_DEREFERENCE","NO_PRESERVE_ROOT","PRESERVE_ROOT","FOLLOW_ARG_DIR_SYM_LINK","FOLLOW_DIR_SYM_LINKS","NO_FOLLOW_SYM_LINKS"],"q":["uu_chcon","","","uu_chcon::options","","","","","","","","","","uu_chcon::options::dereference","","uu_chcon::options::preserve_root","","uu_chcon::options::sym_links","",""],"d":["","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"f":[null,[[],["app",3]],[[],["i32",15]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"p":[]},\ -"uu_chgrp":{"doc":"","t":[0,5,5,3,8,3,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,12,12,5,5,11,11,10,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,5,12,12,12,12,5],"n":["entries","uu_app","uumain","Group","Locate","Passwd","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","fmt","fmt","from","from","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","into","into","locate","locate","locate","locate","locate","name","name","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid"],"q":["uu_chgrp","","","uu_chgrp::entries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Get password/group file entry","","","","Fetch desired entry.","","This is a wrapper function for libc::getgrouplist.","","","","","","","","","","","","","From: …","The list of group IDs returned from GNU’s groups and GNU…","AKA passwd.pw_gid","AKA group.gr_gid","","","","","","","","","","AKA passwd.pw_name","AKA group.gr_name","","","","","","","","","AKA passwd.pw_uid","","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell",""],"i":[0,0,0,0,0,0,1,1,2,1,2,1,2,1,2,1,2,1,2,0,0,1,2,0,0,1,2,3,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,0,1,1,1,1,0],"f":[null,[[],["app",3]],[[],["i32",15]],null,null,null,[[],["vec",3,[["u32",15],["global",3]]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[],["group",3]],[[]],[[]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],[[["option",4,[["u32",15]]]],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],null,null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],[[["str",15]],["result",4,[["u32",15],["error",3]]]],[[]],[[]],[[],["result",4,[["error",3]]]],[[["str",15]],["result",4,[["passwd",3],["error",3]]]],[[["u32",15]],["result",4,[["passwd",3],["error",3]]]],[[["u32",15]],["result",4,[["group",3],["error",3]]]],[[["str",15]],["result",4,[["group",3],["error",3]]]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],null,null,null,null,[[["str",15]],["result",4,[["u32",15],["error",3]]]]],"p":[[3,"Passwd"],[3,"Group"],[8,"Locate"]]},\ +"uu_chgrp":{"doc":"","t":[0,5,5,3,8,3,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,12,12,5,5,11,11,10,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,5,12,12,12,12,5],"n":["entries","uu_app","uumain","Group","Locate","Passwd","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","fmt","fmt","from","from","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","into","into","locate","locate","locate","locate","locate","name","name","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid"],"q":["uu_chgrp","","","uu_chgrp::entries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Get password/group file entry","","","","Fetch desired entry.","","This is a wrapper function for libc::getgrouplist.","","","","","","","","","","","","","From: …","The list of group IDs returned from GNU’s groups and GNU…","AKA passwd.pw_gid","AKA group.gr_gid","","","","","","","","","","AKA passwd.pw_name","AKA group.gr_name","","","","","","","","","AKA passwd.pw_uid","","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell",""],"i":[0,0,0,0,0,0,1,1,2,1,2,1,2,1,2,1,2,1,2,0,0,1,2,0,0,1,2,3,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,0,1,1,1,1,0],"f":[null,[[],["app",3]],[[],["i32",15]],null,null,null,[[],["vec",3,[["u32",15],["global",3]]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[],["group",3]],[[]],[[]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],[[["option",4,[["u32",15]]]],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],null,null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],[[["str",15]],["result",4,[["u32",15],["error",3]]]],[[]],[[]],[[],["result",4,[["error",3]]]],[[["str",15]],["result",4,[["passwd",3],["error",3]]]],[[["u32",15]],["result",4,[["passwd",3],["error",3]]]],[[["str",15]],["result",4,[["group",3],["error",3]]]],[[["u32",15]],["result",4,[["group",3],["error",3]]]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],null,null,null,null,[[["str",15]],["result",4,[["u32",15],["error",3]]]]],"p":[[3,"Passwd"],[3,"Group"],[8,"Locate"]]},\ "uu_chmod":{"doc":"","t":[5,5,5],"n":["is_symlink","uu_app","uumain"],"q":["uu_chmod","",""],"d":["","",""],"i":[0,0,0],"f":[[[["asref",8,[["path",3]]]],["bool",15]],[[],["app",3]],[[],["i32",15]]],"p":[]},\ -"uu_chown":{"doc":"","t":[3,8,3,11,11,11,11,11,11,11,11,11,0,11,11,11,11,12,12,11,11,10,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,12,12,12,12,5,5,3,8,3,5,5,12,12,5,5,10,12,12,12,5,12,12,12,12,5],"n":["Group","Locate","Passwd","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","entries","fmt","fmt","from","from","gid","gid","into","into","locate","locate","locate","locate","locate","name","name","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uid","user_dir","user_info","user_passwd","user_shell","uu_app","uumain","Group","Locate","Passwd","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","locate","name","name","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid"],"q":["uu_chown","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uu_chown::entries","","","","","","","","","","","","","","","","","",""],"d":["","Fetch desired entry.","","This is a wrapper function for libc::getgrouplist.","","","","","","","","","Get password/group file entry","","","","","AKA passwd.pw_gid","AKA group.gr_gid","","","","","","","","AKA passwd.pw_name","AKA group.gr_name","","","","","","","","","AKA passwd.pw_uid","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell","","","","Fetch desired entry.","","From: …","The list of group IDs returned from GNU’s groups and GNU…","AKA passwd.pw_gid","AKA group.gr_gid","","","","AKA passwd.pw_name","AKA group.gr_name","AKA passwd.pw_uid","","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell",""],"i":[0,0,0,1,1,2,1,2,1,2,1,2,0,1,2,1,2,1,2,1,2,3,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,1,1,1,0,0,0,0,0,0,0,1,2,0,0,3,1,2,1,0,1,1,1,1,0],"f":[null,null,null,[[],["vec",3,[["u32",15],["global",3]]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[],["group",3]],[[]],[[]],null,[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],null,null,[[]],[[]],[[],["result",4,[["error",3]]]],[[["str",15]],["result",4,[["passwd",3],["error",3]]]],[[["u32",15]],["result",4,[["passwd",3],["error",3]]]],[[["str",15]],["result",4,[["group",3],["error",3]]]],[[["u32",15]],["result",4,[["group",3],["error",3]]]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,[[],["app",3]],[[],["i32",15]],null,null,null,[[],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],[[["option",4,[["u32",15]]]],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],null,null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],[[["str",15]],["result",4,[["u32",15],["error",3]]]],[[],["result",4,[["error",3]]]],null,null,null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],null,null,null,null,[[["str",15]],["result",4,[["u32",15],["error",3]]]]],"p":[[3,"Passwd"],[3,"Group"],[8,"Locate"]]},\ +"uu_chown":{"doc":"","t":[3,8,3,11,11,11,11,11,11,11,11,11,0,11,11,11,11,12,12,11,11,10,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,12,12,12,12,5,5,3,8,3,5,5,12,12,5,5,10,12,12,12,5,12,12,12,12,5],"n":["Group","Locate","Passwd","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","entries","fmt","fmt","from","from","gid","gid","into","into","locate","locate","locate","locate","locate","name","name","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uid","user_dir","user_info","user_passwd","user_shell","uu_app","uumain","Group","Locate","Passwd","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","locate","name","name","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid"],"q":["uu_chown","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uu_chown::entries","","","","","","","","","","","","","","","","","",""],"d":["","Fetch desired entry.","","This is a wrapper function for libc::getgrouplist.","","","","","","","","","Get password/group file entry","","","","","AKA passwd.pw_gid","AKA group.gr_gid","","","","","","","","AKA passwd.pw_name","AKA group.gr_name","","","","","","","","","AKA passwd.pw_uid","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell","","","","Fetch desired entry.","","From: …","The list of group IDs returned from GNU’s groups and GNU…","AKA passwd.pw_gid","AKA group.gr_gid","","","","AKA passwd.pw_name","AKA group.gr_name","AKA passwd.pw_uid","","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell",""],"i":[0,0,0,1,1,2,1,2,1,2,1,2,0,1,2,1,2,1,2,1,2,3,1,1,2,2,1,2,1,2,1,2,1,2,1,2,1,1,1,1,1,0,0,0,0,0,0,0,1,2,0,0,3,1,2,1,0,1,1,1,1,0],"f":[null,null,null,[[],["vec",3,[["u32",15],["global",3]]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[],["group",3]],[[]],[[]],null,[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],null,null,[[]],[[]],[[],["result",4,[["error",3]]]],[[["u32",15]],["result",4,[["passwd",3],["error",3]]]],[[["str",15]],["result",4,[["passwd",3],["error",3]]]],[[["u32",15]],["result",4,[["group",3],["error",3]]]],[[["str",15]],["result",4,[["group",3],["error",3]]]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,[[],["app",3]],[[],["i32",15]],null,null,null,[[],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],[[["option",4,[["u32",15]]]],["result",4,[["vec",3,[["u32",15],["global",3]]],["error",3]]]],null,null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],[[["str",15]],["result",4,[["u32",15],["error",3]]]],[[],["result",4,[["error",3]]]],null,null,null,[[["u32",15]],["result",4,[["string",3],["error",3]]]],null,null,null,null,[[["str",15]],["result",4,[["u32",15],["error",3]]]]],"p":[[3,"Passwd"],[3,"Group"],[8,"Locate"]]},\ "uu_chroot":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_chroot",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\ "uu_cksum":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_cksum",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\ "uu_comm":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_comm",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\ @@ -193,11 +193,11 @@ var searchIndex = JSON.parse('{\ "uu_unlink":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_unlink",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\ "uu_uptime":{"doc":"","t":[0,5,5,7],"n":["options","uu_app","uumain","SINCE"],"q":["uu_uptime","","","uu_uptime::options"],"d":["","","",""],"i":[0,0,0,0],"f":[null,[[],["app",3]],[[],["i32",15]],null],"p":[]},\ "uu_users":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_users",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\ -"uu_wc":{"doc":"","t":[0,5,5,7,7,7,7,7],"n":["options","uu_app","uumain","BYTES","CHAR","LINES","MAX_LINE_LENGTH","WORDS"],"q":["uu_wc","","","uu_wc::options","","","",""],"d":["","","","","","","",""],"i":[0,0,0,0,0,0,0,0],"f":[null,[[],["app",3]],[[],["i32",15]],null,null,null,null,null],"p":[]},\ +"uu_wc":{"doc":"","t":[0,5,5,7,7,7,7,7,7],"n":["options","uu_app","uumain","BYTES","CHAR","FILES0_FROM","LINES","MAX_LINE_LENGTH","WORDS"],"q":["uu_wc","","","uu_wc::options","","","","",""],"d":["","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0],"f":[null,[[],["app",3]],[[],["i32",15]],null,null,null,null,null,null],"p":[]},\ "uu_who":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_who",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\ "uu_whoami":{"doc":"","t":[5,5],"n":["uu_app","uumain"],"q":["uu_whoami",""],"d":["",""],"i":[0,0],"f":[[[],["app",3]],[[],["i32",15]]],"p":[]},\ "uu_yes":{"doc":"","t":[5,5,5],"n":["exec","uu_app","uumain"],"q":["uu_yes","",""],"d":["","",""],"i":[0,0,0],"f":[[[],["result",6]],[[],["app",3]],[[],["i32",15]]],"p":[]},\ -"uucore":{"doc":"","t":[8,13,4,13,13,4,13,13,11,5,0,14,11,11,11,11,11,11,14,14,0,0,0,0,5,11,11,11,11,0,0,5,14,11,11,23,0,0,0,0,0,0,0,0,0,0,0,5,14,14,14,14,14,14,0,11,11,11,11,11,11,14,5,0,0,12,12,13,7,7,4,13,4,13,13,13,13,13,0,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,7,7,7,5,5,5,8,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,10,11,11,11,11,11,13,13,13,13,13,13,13,3,13,4,6,13,4,4,13,13,13,11,11,11,11,11,11,11,11,11,11,5,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,12,12,12,3,8,3,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,12,12,5,5,11,11,10,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,5,12,12,12,12,5,12,3,8,8,3,6,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,10,12,12,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,13,3,13,13,4,13,13,13,4,11,11,11,11,11,11,5,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,8,8,3,3,3,5,10,11,12,12,12,10,10,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,10,11,10,11,11,11,11,10,11,12,10,11,11,11,11,11,10,11,12,12,12,10,11,11,11,10,5,5,5,5,12,5,3,5,11,11,11,10,11,10,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,13,4,13,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,12,12,5,13,13,13,3,13,13,4,13,13,13,4,13,13,13,3,4,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,12,12,12,0,11,11,11,11,11,12,12,11,11,11,11,11,11,11,12,11,11,11,11,11,12,11,0,12,12,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,12,12,12,12,3,8,3,5,5,12,12,5,5,10,12,12,12,5,12,12,12,12,5,17,17,17,17,17,17,0,0,0,0,17,17,17,17,17,17,17,17,17,17,17,6,6,5,5,5,5,8,13,4,13,11,11,11,11,11,11,11,11,11,11,5,5,5,5,11,11,10,11,11,11,11,11,11,11,10,12,12,3,11,11,11,5,5,11,11,11,11,11,11,12,11,12,11,11,11,11,11,3,11,11,12,11,11,11,11,11,11,11,11,7,7,5,5,5,17,17,17,7,17,17,17,17,17,17,17,17,17,17,17,3,3,11,11,11,11,11,11,5,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,5,5],"n":["Args","Complete","ConversionResult","ConvertLossy","Ignore","InvalidEncodingHandling","Lossy","Panic","accept_any","args_os","backup_control","bin","borrow","borrow","borrow_mut","borrow_mut","collect_str","collect_str_lossy","crash","crash_if_err","display","encoding","entries","error","execution_phrase","expect_complete","expect_lossy","from","from","fs","fsext","get_utility_is_second_arg","has","into","into","main","memo","mode","os","panic","parse_size","parse_time","perms","pipes","process","ranges","ringbuffer","set_utility_is_second_arg","show","show_error","show_error_custom_description","show_if_err","show_usage_error","show_warning","signals","try_from","try_from","try_into","try_into","type_id","type_id","uio_error","util_name","utmpx","version_cmp","0","0","AmbiguousArgument","BACKUP_CONTROL_LONG_HELP","BACKUP_CONTROL_VALUES","BackupError","BackupImpossible","BackupMode","ExistingBackup","InvalidArgument","NoBackup","NumberedBackup","SimpleBackup","arguments","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","code","determine_backup_mode","determine_backup_suffix","eq","eq","equivalent","equivalent","fmt","fmt","fmt","from","from","get_backup_path","into","into","ne","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","usage","0","0","1","1","OPT_BACKUP","OPT_BACKUP_NO_ARG","OPT_SUFFIX","backup","backup_no_args","suffix","Quotable","Quoted","borrow","borrow_mut","clone","clone_into","fmt","fmt","force","from","from","into","maybe_quote","maybe_quote","native","native_raw","print_verbatim","println_verbatim","quote","to_owned","to_string","try_from","try_into","type_id","Base16","Base2Lsbf","Base2Msbf","Base32","Base32Hex","Base64","Base64Url","Data","Decode","DecodeError","DecodeResult","DecodeZ85","EncodeError","Format","Io","Z85","Z85InputLenNotMultipleOf4","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","decode","decode","encode","encode","fmt","fmt","from","from","from","from","from","from","from","ignore_garbage","into","into","into","into","line_wrap","new","source","to_owned","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","wrap_print","wrap_write","0","0","0","Group","Locate","Passwd","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","fmt","fmt","from","from","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","into","into","locate","locate","locate","locate","locate","name","name","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid","0","ExitCode","FromIo","UError","UIoError","UResult","USimpleError","UUsageError","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","code","code","code","code","code","code","code","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","get_exit_code","into","into","into","into","map_err_context","message","message","new","new","new","new","set_exit_code","strip_errno","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","uio_error","usage","usage","usage","Existing","FileInformation","Logical","Missing","MissingHandling","None","Normal","Physical","ResolveMode","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","canonicalize","clone","clone","clone_into","clone_into","display_permissions","display_permissions_unix","eq","eq","eq","equivalent","equivalent","equivalent","file_size","fmt","fmt","from","from","from","from_file","from_path","has","hash","into","into","into","normalize_path","resolve_relative_path","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","BirthTime","FsMeta","FsUsage","MountInfo","StatFs","StatFs","avail_blocks","avail_blocks","bavail","bavail_top_bit_set","bfree","birth","block_size","block_size","blocks","blocksize","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","dev_id","dev_name","dummy","eq","equivalent","f_bavail","f_bavail","f_bfree","f_bfree","f_blocks","f_blocks","f_bsize","f_bsize","f_ffree","f_ffree","f_files","f_files","f_frsize","f_frsize","f_fsid","f_fsid","f_namelen","f_namelen","f_type","f_type","ffree","files","fmt","fmt","fmt","free_blocks","free_blocks","free_file_nodes","free_file_nodes","from","from","from","fs_type","fs_type","fs_type","fsid","fsid","hash","into","into","into","io_size","io_size","mount_dir","mount_option","mount_root","namelen","namelen","ne","new","pretty_birth","pretty_filetype","pretty_fstype","pretty_time","read_fs_list","remote","statfs","statfs_fn","statfs_fn","to_owned","to_owned","to_owned","total_blocks","total_blocks","total_file_nodes","total_file_nodes","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","Memo","apply","borrow","borrow_mut","from","into","new","run_all","try_from","try_into","type_id","get_umask","parse_mode","parse_numeric","parse_symbolic","strip_minus_from_mode","is_wsl_1","is_wsl_2","mute_sigpipe_panic","ParseFailure","ParseSizeError","SizeTooBig","borrow","borrow_mut","description","eq","equivalent","fmt","fmt","from","into","ne","parse_size","to_string","try_from","try_into","type_id","0","0","from_str","All","All","Changes","ChownExecutor","First","Group","IfFrom","None","Normal","Silent","TraverseSymlinks","User","UserGroup","Verbose","Verbosity","VerbosityLevel","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chown_base","clone","clone","clone_into","clone_into","dereference","dest_gid","dest_uid","entries","eq","eq","eq","equivalent","exec","files","filter","fmt","fmt","from","from","from","from","from","groups_only","into","into","into","into","into","level","ne","options","preserve_root","recursive","to_owned","to_owned","traverse_symlinks","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","verbosity","wrap_chown","0","0","0","1","Group","Locate","Passwd","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","locate","name","name","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid","ARG_FILES","ARG_GROUP","ARG_OWNER","FROM","RECURSIVE","REFERENCE","dereference","preserve_root","traverse","verbosity","DEREFERENCE","NO_DEREFERENCE","NO_PRESERVE","PRESERVE","EVERY","NO_TRAVERSE","TRAVERSE","CHANGES","QUIET","SILENT","VERBOSE","Error","Result","pipe","splice","splice_exact","vmsplice","ChildExt","Code","ExitStatus","Signal","borrow","borrow_mut","clone","clone_into","code","eq","equivalent","fmt","fmt","from","getegid","geteuid","getgid","getuid","into","ne","send_signal","signal","success","to_owned","to_string","try_from","try_into","type_id","wait_or_timeout","0","0","Range","borrow","borrow_mut","cmp","complement","contain","eq","equivalent","fmt","from","from_list","from_str","high","into","low","ne","partial_cmp","try_from","try_into","type_id","RingBuffer","borrow","borrow_mut","data","from","from_iter","into","new","push_back","try_from","try_into","type_id","ALL_SIGNALS","DEFAULT_SIGNAL","is_signal","signal_by_name_or_value","signal_name_by_value","ACCOUNTING","BOOT_TIME","DEAD_PROCESS","DEFAULT_FILE","EMPTY","INIT_PROCESS","LOGIN_PROCESS","NEW_TIME","OLD_TIME","RUN_LVL","USER_PROCESS","UT_HOSTSIZE","UT_IDSIZE","UT_LINESIZE","UT_NAMESIZE","Utmpx","UtmpxIter","borrow","borrow","borrow_mut","borrow_mut","canon_host","drop","endutxent","exit_status","from","from","getutxent","host","into","into","into_inner","into_iter","is_user_process","iter_all_records","iter_all_records_from","login_time","next","pid","record_type","setutxent","terminal_suffix","try_from","try_from","try_into","try_into","tty_device","type_id","type_id","user","utmpxname","version_cmp"],"q":["uucore","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::ConversionResult","","uucore::backup_control","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::backup_control::BackupError","","","","uucore::backup_control::arguments","","","","","","uucore::display","","","","","","","","","","","","","","","","","","","","","","","","uucore::encoding","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::encoding::DecodeError","","","uucore::entries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::fs","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::fsext","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::memo","","","","","","","","","","","uucore::mode","","","","","uucore::os","","uucore::panic","uucore::parse_size","","","","","","","","","","","","","","","","","","uucore::parse_size::ParseSizeError","","uucore::parse_time","uucore::perms","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::perms::IfFrom","","","","uucore::perms::entries","","","","","","","","","","","","","","","","","","","uucore::perms::options","","","","","","","","","","uucore::perms::options::dereference","","uucore::perms::options::preserve_root","","uucore::perms::options::traverse","","","uucore::perms::options::verbosity","","","","uucore::pipes","","","","","","uucore::process","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::process::ExitStatus","","uucore::ranges","","","","","","","","","","","","","","","","","","","","uucore::ringbuffer","","","","","","","","","","","","uucore::signals","","","","","uucore::utmpx","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::version_cmp"],"d":["","","","","","","","","","","Implement GNU-style backup functionality.","","","","","","Converts each iterator item to a String and collects these …","convenience function for a more slim interface","Display an error and std::process::exit","Unwrap a std::result::Result, crashing instead of …","","","Get password/group file entry","All utils return exit with an exit code. Usually, the …","Derive the complete execution phrase for “usage”.","","","","","Set of functions to manage files and symlinks","Set of functions to manage file systems","","","","","","Memo runner of printf Takes a format string and arguments","Set of functions to parse modes","","Custom panic hooks that allow silencing certain types of …","","","Common functions to manage permissions","","Set of functions to manage IDs","","A fixed-size ring buffer.","","Display a crate::error::UError and set global exit code.","Show an error to stderr in a similar style to GNU …","Show a warning to stderr in a similar style to GNU …","Display an error and set global exit code in error case.","Show a bad invocation help message in a similar style to …","Print a warning message to stderr.","","","","","","","","Shorthand to construct UIoError-instances.","Derive the utility name.","Aims to provide platform-independent methods to obtain …","","","","An ambiguous argument (e.g. ‘n’) was given as backup …","","","Backup error types.","Currently unused","Available backup modes.","Argument ‘existing’, ‘nil’","An invalid argument (e.g. ‘foo’) was given as backup …","Argument ‘none’, ‘off’","Argument ‘numbered’, ‘t’","Argument ‘simple’, ‘never’","Arguments for backup-related functionality.","","","","","","","","Determine the “mode” for the backup operation to …","Obtain the suffix to use for a backup.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","‘–backup’ argument","‘-b’ argument","‘-S, –suffix’ argument","An extension trait to apply quoting to strings.","A wrapper around string types for displaying with quoting …","","","","","","","Toggle forced quoting. If true, quotes are added even if …","","","","Like quote(), but don’t actually add quotes unless …","Like quote(), but don’t actually add quotes unless …","Quote a string with the default style for the platform.","Quote an OsStr with the default style for the platform.","Like println_verbatim, without the trailing newline.","Print a path (or OsStr-like object) directly to stdout, …","Returns an object that implements Display for printing …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Fetch desired entry.","","This is a wrapper function for libc::getgrouplist.","","","","","","","","","","","","","From: …","The list of group IDs returned from GNU’s groups and GNU…","AKA passwd.pw_gid","AKA group.gr_gid","","","","","","","","","","AKA passwd.pw_name","AKA group.gr_name","","","","","","","","","AKA passwd.pw_uid","","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell","","","A special error type that does not print any message when …","Enables the conversion from std::io::Error to UError and …","Custom errors defined by the utils and uucore.","Wrapper type around std::io::Error.","Result type that should be returned by all utils.","A simple error type with an exit code and a message that …","","","","","","","","","","Error code of a custom error.","Error code of a custom error.","","","","","","","","","","","","","","","","","","","Get the last exit code set with set_exit_code. The default …","","","","","","","","","","","","Set the exit code for the program if uumain returns Ok(()).","Strip the trailing “ (os error XX)“ from io error …","","","","","","","","","","","","","","","","","Shorthand to construct UIoError-instances.","Print usage help to a custom error.","Print usage help to a custom error.","","Resolve symbolic links, ignoring errors on the final …","Information to uniquely identify a file","Resolve ‘..’ elements before symlinks","Resolve symbolic links, ignoring errors on the non-final …","Controls how symbolic links should be handled when …","Do not resolve any symbolic links.","Return an error if any part of the path is missing.","Resolve symlinks as encountered when processing the path","Controls when symbolic links are resolved","","","","","","","Return the canonical, absolute form of a path.","","","","","","","","","","","","","","","","","","","Get information from a currently open file","Get information for a given path.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Read file system list.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Test if the program is running under WSL","","Terminate without error on panics that occur due to broken …","","","","","","","","","","","","","","Parse a size string into a number of bytes.","","","","","","","","","","","","","","","","","","","","","","","The various level of verbosity","","","","","","","","","","","Base implementation for chgrp and chown.","","","","","","","","Get password/group file entry","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Perform the change of owner on a path with the various …","","","","","","Fetch desired entry.","","From: …","The list of group IDs returned from GNU’s groups and GNU…","AKA passwd.pw_gid","AKA group.gr_gid","","","","AKA passwd.pw_name","AKA group.gr_name","AKA passwd.pw_uid","","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell","","","","","","","","","","","","","","","","","","","","","","","Nix’s main error type.","Nix Result Type","A wrapper around nix::unistd::pipe that ensures the pipe …","Less noisy wrapper around nix::fcntl::splice.","Splice wrapper which fully finishes the write.","Copy data from bytes into target, which must be a pipe.","Missing methods for Child objects","","","","","","","","","","","","","","getegid() returns the effective group ID of the calling …","geteuid() returns the effective user ID of the calling …","getgid() returns the real group ID of the calling process.","getuid() returns the real user ID of the calling process.","","","Send a signal to a Child process.","","","","","","","","Wait for a process to finish or return after the specified …","","","","","","","","Test if at least one of the given Ranges contain the …","","","","","","","","","","","","","","","A fixed-size ring buffer backed by a VecDeque.","","","","","","","","Append a value to the end of the ring buffer.","","","","","","","","","","","","","","","","","","","","","","","","","Iterator of login records","","","","","Canonicalize host name using DNS","","","A.K.A. ut.ut_exit","","","","A.K.A. ut.ut_host","","","Consumes the Utmpx, returning the underlying C struct utmpx","","","Iterate through all the utmp records.","Iterate through all the utmp records from a specific file.","A.K.A. ut.ut_tv","","A.K.A. ut.ut_pid","A.K.A. ut.ut_type","","A.K.A. ut.ut_id","","","","","A.K.A. ut.ut_line","","","A.K.A. ut.ut_user","",""],"i":[0,1,0,2,2,0,1,2,1,0,0,0,2,1,2,1,3,3,0,0,0,0,0,0,0,1,1,2,1,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,2,1,2,1,0,0,0,0,4,5,6,0,0,0,6,0,7,6,7,7,7,0,7,6,7,6,7,7,6,0,0,7,6,7,6,7,6,6,7,6,0,7,6,6,7,6,7,6,7,6,7,6,6,8,9,8,9,0,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,11,11,10,10,0,0,11,10,10,10,10,10,12,12,12,12,12,12,12,0,13,0,0,13,0,0,13,12,14,14,15,13,12,14,15,13,12,12,12,0,15,0,15,13,13,14,15,13,13,13,13,12,15,14,15,13,12,15,15,13,12,13,14,15,13,12,14,15,13,12,14,15,13,12,0,0,16,17,18,0,0,0,19,19,20,19,20,19,20,19,20,19,20,19,20,0,0,19,20,0,0,19,20,21,19,19,20,20,19,20,19,20,19,20,19,20,19,20,19,0,19,19,19,19,0,22,0,0,0,0,0,0,0,23,24,25,22,23,24,25,22,26,26,23,24,22,23,24,23,23,24,24,25,25,22,22,23,24,25,25,22,0,23,24,25,22,27,23,24,23,24,25,22,0,0,23,24,25,22,23,24,25,22,23,24,25,22,23,24,25,22,0,26,26,24,28,0,29,28,0,29,28,29,0,30,28,29,30,28,29,0,28,29,28,29,0,0,30,28,29,30,28,29,30,28,29,30,28,29,30,30,0,30,30,28,29,0,0,28,29,30,28,29,30,28,29,30,28,29,0,0,0,0,0,0,31,32,33,33,33,34,31,32,33,33,35,33,32,35,33,32,35,33,32,35,33,32,35,35,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,33,33,35,33,32,31,32,31,32,35,33,32,31,32,35,31,32,32,35,33,32,31,32,35,35,35,31,32,32,33,34,0,0,0,0,35,0,0,0,35,33,32,31,32,31,32,35,33,32,35,33,32,35,33,32,0,36,36,36,36,36,36,36,36,36,36,0,0,0,0,0,0,0,0,37,0,37,37,37,37,37,37,37,37,37,37,37,0,37,37,37,37,38,39,0,40,41,42,0,41,40,0,41,42,42,0,40,40,42,0,0,40,43,42,44,41,40,43,42,44,41,0,42,44,42,44,43,43,43,0,42,44,41,41,43,43,43,42,44,40,43,42,44,41,44,40,43,42,44,41,44,44,0,43,43,42,44,43,40,43,42,44,41,40,43,42,44,41,40,43,42,44,41,43,0,45,46,47,47,0,0,0,0,0,19,20,0,0,21,19,20,19,0,19,19,19,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,48,48,48,48,48,48,48,48,48,48,48,0,0,0,0,48,48,49,48,48,48,48,48,48,48,49,50,51,0,52,52,52,0,0,52,52,52,52,52,52,52,52,52,52,52,52,52,52,0,53,53,53,53,53,53,53,53,53,53,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,55,54,55,54,55,0,54,54,55,0,54,54,55,54,55,54,54,54,54,55,54,54,0,54,54,55,54,55,54,54,55,54,0,0],"f":[null,null,null,null,null,null,null,null,[[],["vec",3,[["string",3]]]],[[]],null,null,[[]],[[]],[[]],[[]],[[["invalidencodinghandling",4]],["conversionresult",4]],[[],["conversionresult",4]],null,null,null,null,null,null,[[],["str",15]],[[["str",15]],["vec",3,[["string",3]]]],[[["str",15]],["vec",3,[["string",3]]]],[[]],[[]],null,null,[[],["bool",15]],null,[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,[[]],null,null,null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[],["str",15]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[],["backupmode",4]],[[]],[[],["i32",15]],[[["argmatches",3]],["uresult",6,[["backupmode",4]]]],[[["argmatches",3]],["string",3]],[[["backupmode",4]],["bool",15]],[[["backuperror",4]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["backupmode",4],["path",3],["str",15]],["option",4,[["pathbuf",3]]]],[[]],[[]],[[["backuperror",4]],["bool",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["bool",15]],null,null,null,null,null,null,null,[[],["arg",3]],[[],["arg",3]],[[],["arg",3]],null,null,[[]],[[]],[[],["quoted",3]],[[]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["bool",15]],["quoted",3]],[[]],[[],["quoted",3]],[[]],[[],["quoted",3]],[[],["quoted",3]],[[["str",15]],["quoted",3]],[[["osstr",3]],["quoted",3]],[[["asref",8,[["osstr",3]]]],["result",6]],[[["asref",8,[["osstr",3]]]],["result",6]],[[],["quoted",3]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["format",4]],[[]],[[["format",4]],["decoderesult",6]],[[],["decoderesult",6]],[[["format",4]],["result",4,[["string",3],["encodeerror",4]]]],[[],["result",4,[["string",3],["encodeerror",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["decodeerror",3]]],[[["error",3]]],[[]],[[["decodeerror",4]]],[[]],[[["bool",15]]],[[]],[[]],[[]],[[]],[[["usize",15]]],[[["format",4]]],[[],["option",4,[["error",8]]]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["data",3],["str",15]]],[[["write",8],["usize",15],["str",15]],["result",6]],null,null,null,null,null,null,[[],["vec",3,[["gid_t",6]]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[],["group",3]],[[]],[[]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],[[["option",4,[["u32",15]]]],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],null,null,[[["gid_t",6]],["ioresult",6,[["string",3]]]],[[["str",15]],["ioresult",6,[["gid_t",6]]]],[[]],[[]],[[],["ioresult",6]],[[["uid_t",6]],["ioresult",6]],[[["str",15]],["ioresult",6]],[[["str",15]],["ioresult",6]],[[["gid_t",6]],["ioresult",6]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[["uid_t",6]],["ioresult",6,[["string",3]]]],null,null,null,null,[[["str",15]],["ioresult",6,[["uid_t",6]]]],null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["i32",15]],[[],["i32",15]],[[],["i32",15]],[[],["i32",15]],[[],["i32",15]],null,null,[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[]],[[]],[[["error",3]]],[[]],[[]],[[],["i32",15]],[[]],[[]],[[]],[[]],[[]],null,null,[[["i32",15],["into",8,[["string",3]]]],["box",3,[["uerror",8]]]],[[["i32",15],["into",8,[["string",3]]]],["box",3,[["uerror",8]]]],[[["errorkind",4],["into",8,[["string",3]]]],["box",3,[["uerror",8]]]],[[["i32",15]],["box",3,[["uerror",8]]]],[[["i32",15]]],[[["error",3]],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["asref",8,[["path",3]]],["missinghandling",4],["resolvemode",4]],["ioresult",6,[["pathbuf",3]]]],[[],["missinghandling",4]],[[],["resolvemode",4]],[[]],[[]],[[["metadata",3],["bool",15]],["string",3]],[[["mode_t",6],["bool",15]],["string",3]],[[],["bool",15]],[[["missinghandling",4]],["bool",15]],[[["resolvemode",4]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["u64",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[],["option",4]],[[["bool",15]],["option",4]],null,[[]],[[]],[[]],[[]],[[["path",3]],["pathbuf",3]],[[["path",3]],["cow",4,[["path",3]]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,[[],["i32",15]],[[],["u64",15]],[[],["u64",15]],null,null,null,[[],["string",3]],[[],["i64",15]],[[],["i64",15]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["mountinfo",3]],[[],["fsusage",3]],[[],["statfs",3]],[[]],[[]],[[]],null,null,null,[[["statfs",3]],["bool",15]],[[],["bool",15]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[]],[[],["i64",15]],[[],["i64",15]],null,[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[],["u64",15]],null,null,null,[[],["u64",15]],[[],["u64",15]],[[["statfs",3]],["bool",15]],[[["statfs",3]]],[[],["string",3]],[[["mode_t",6],["u64",15]],["str",15]],[[["i64",15]],["cow",4,[["str",15]]]],[[["i64",15],["i64",15]],["string",3]],[[],["vec",3,[["mountinfo",3]]]],null,[[["asref",8,[["path",3]]]],["result",4,[["statfs",3],["string",3]]]],null,[[],["i32",15]],[[]],[[]],[[]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[["peekable",3]]],[[]],[[]],[[]],[[]],[[["str",15],["peekable",3]]],[[["str",15]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["u32",15]],[[["str",15]],["result",4,[["mode_t",6],["string",3]]]],[[["u32",15],["str",15],["bool",15]],["result",4,[["u32",15],["string",3]]]],[[["u32",15],["str",15],["u32",15],["bool",15]],["result",4,[["u32",15],["string",3]]]],[[["vec",3]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[]],null,null,null,[[]],[[]],[[],["str",15]],[[["parsesizeerror",4]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[]],[[]],[[["parsesizeerror",4]],["bool",15]],[[["str",15]],["result",4,[["usize",15],["parsesizeerror",4]]]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,[[["str",15]],["result",4,[["duration",3],["string",3]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["app",3],["str",15],["bool",15]],["uresult",6]],[[],["verbositylevel",4]],[[],["verbosity",3]],[[]],[[]],null,null,null,null,[[["verbositylevel",4]],["bool",15]],[[["verbosity",3]],["bool",15]],[[["traversesymlinks",4]],["bool",15]],[[],["bool",15]],[[],["uresult",6]],null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],null,[[["verbosity",3]],["bool",15]],null,null,null,[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[["asref",8,[["path",3]]],["metadata",3],["option",4,[["u32",15]]],["option",4,[["u32",15]]],["bool",15],["verbosity",3]],["result",4,[["string",3],["string",3]]]],null,null,null,null,null,null,null,[[],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],[[["option",4,[["u32",15]]]],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],null,null,[[["gid_t",6]],["ioresult",6,[["string",3]]]],[[["str",15]],["ioresult",6,[["gid_t",6]]]],[[],["ioresult",6]],null,null,null,[[["uid_t",6]],["ioresult",6,[["string",3]]]],null,null,null,null,[[["str",15]],["ioresult",6,[["uid_t",6]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["result",6]],[[["usize",15]],["result",6,[["usize",15]]]],[[["usize",15]],["result",6]],[[],["result",6,[["usize",15]]]],null,null,null,null,[[]],[[]],[[],["exitstatus",4]],[[]],[[],["option",4,[["i32",15]]]],[[["exitstatus",4]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[],["gid_t",6]],[[],["uid_t",6]],[[],["gid_t",6]],[[],["uid_t",6]],[[]],[[["exitstatus",4]],["bool",15]],[[["usize",15]],["result",6]],[[],["option",4,[["i32",15]]]],[[],["bool",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["duration",3]],["result",6,[["option",4,[["exitstatus",4]]]]]],null,null,null,[[]],[[]],[[["range",3]],["ordering",4]],[[],["vec",3,[["range",3]]]],[[["usize",15]],["bool",15]],[[["range",3]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[]],[[["str",15]],["result",4,[["vec",3],["string",3]]]],[[["str",15]],["result",4,[["str",15]]]],null,[[]],null,[[["range",3]],["bool",15]],[[["range",3]],["option",4,[["ordering",4]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],[[]],null,[[]],[[["usize",15]]],[[]],[[["usize",15]]],[[],["option",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,[[["usize",15]],["bool",15]],[[["str",15]],["option",4,[["usize",15]]]],[[["usize",15]],["option",4,[["str",15]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[],["ioresult",6,[["string",3]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[]],[[]],[[],["utmpx",3]],[[]],[[],["bool",15]],[[],["utmpxiter",3]],[[["asref",8,[["path",3]]]],["utmpxiter",3]],[[],["tm",3]],[[],["option",4]],[[],["i32",15]],[[],["i16",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["string",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["string",3]],[[],["i32",15]],[[["str",15],["str",15]],["ordering",4]]],"p":[[4,"ConversionResult"],[4,"InvalidEncodingHandling"],[8,"Args"],[13,"Complete"],[13,"Lossy"],[4,"BackupError"],[4,"BackupMode"],[13,"InvalidArgument"],[13,"AmbiguousArgument"],[3,"Quoted"],[8,"Quotable"],[4,"Format"],[4,"DecodeError"],[4,"EncodeError"],[3,"Data"],[13,"Decode"],[13,"DecodeZ85"],[13,"Io"],[3,"Passwd"],[3,"Group"],[8,"Locate"],[3,"ExitCode"],[3,"USimpleError"],[3,"UUsageError"],[3,"UIoError"],[8,"UError"],[8,"FromIo"],[4,"MissingHandling"],[4,"ResolveMode"],[3,"FileInformation"],[8,"FsMeta"],[3,"statfs_fn"],[3,"FsUsage"],[8,"BirthTime"],[3,"MountInfo"],[3,"Memo"],[4,"ParseSizeError"],[13,"ParseFailure"],[13,"SizeTooBig"],[4,"IfFrom"],[4,"TraverseSymlinks"],[4,"VerbosityLevel"],[3,"ChownExecutor"],[3,"Verbosity"],[13,"User"],[13,"Group"],[13,"UserGroup"],[4,"ExitStatus"],[8,"ChildExt"],[13,"Code"],[13,"Signal"],[3,"Range"],[3,"RingBuffer"],[3,"Utmpx"],[3,"UtmpxIter"]]},\ +"uucore":{"doc":"","t":[8,13,4,13,13,4,13,13,11,5,0,14,11,11,11,11,11,11,14,14,0,0,0,0,5,11,11,11,11,0,0,5,14,11,11,0,23,0,0,0,0,0,0,0,0,0,0,0,5,14,14,14,14,14,14,0,11,11,11,11,11,11,14,5,0,0,12,12,13,7,7,4,13,4,13,13,13,13,13,0,11,11,11,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,7,7,7,5,5,5,8,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,10,11,11,11,11,11,13,13,13,13,13,13,13,3,13,4,6,13,4,4,13,13,13,11,11,11,11,11,11,11,11,11,11,5,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,12,12,12,3,8,3,11,11,11,11,11,11,11,11,11,11,11,11,11,5,5,12,12,5,5,11,11,10,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,5,12,12,12,12,5,12,3,8,8,3,6,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,10,12,12,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,13,3,13,13,4,13,13,13,4,11,11,11,11,11,11,5,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,5,5,11,11,11,11,11,11,11,11,11,11,11,8,8,3,3,3,5,10,11,12,12,12,10,10,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,10,11,10,11,11,11,11,10,11,12,10,11,11,11,11,11,10,11,12,12,12,10,11,11,11,10,5,5,5,5,12,5,3,5,11,11,11,10,11,10,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,5,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,5,5,5,5,5,5,5,5,13,4,13,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,12,12,5,13,13,13,3,13,13,4,13,13,13,4,13,13,13,3,4,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,12,12,12,0,11,11,11,11,11,12,12,11,11,11,11,11,11,11,12,11,11,11,11,11,12,11,0,12,12,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,5,12,12,12,12,3,8,3,5,5,12,12,5,5,10,12,12,12,5,12,12,12,12,5,17,17,17,17,17,17,0,0,0,0,17,17,17,17,17,17,17,17,17,17,17,6,6,5,5,5,5,8,13,4,13,11,11,11,11,11,11,11,11,11,11,5,5,5,5,11,11,10,11,11,11,11,11,11,11,10,12,12,3,11,11,11,5,5,11,11,11,11,11,11,12,11,12,11,11,11,11,11,3,11,11,12,11,11,11,11,11,11,11,11,7,7,5,5,5,17,17,17,7,17,17,17,17,17,17,17,17,17,17,17,3,3,11,11,11,11,11,11,5,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,5,5],"n":["Args","Complete","ConversionResult","ConvertLossy","Ignore","InvalidEncodingHandling","Lossy","Panic","accept_any","args_os","backup_control","bin","borrow","borrow","borrow_mut","borrow_mut","collect_str","collect_str_lossy","crash","crash_if_err","display","encoding","entries","error","execution_phrase","expect_complete","expect_lossy","from","from","fs","fsext","get_utility_is_second_arg","has","into","into","lines","main","memo","mode","os","panic","parse_size","parse_time","perms","pipes","process","ranges","ringbuffer","set_utility_is_second_arg","show","show_error","show_error_custom_description","show_if_err","show_usage_error","show_warning","signals","try_from","try_from","try_into","try_into","type_id","type_id","uio_error","util_name","utmpx","version_cmp","0","0","AmbiguousArgument","BACKUP_CONTROL_LONG_HELP","BACKUP_CONTROL_VALUES","BackupError","BackupImpossible","BackupMode","ExistingBackup","InvalidArgument","NoBackup","NumberedBackup","SimpleBackup","arguments","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","code","determine_backup_mode","determine_backup_suffix","eq","eq","equivalent","equivalent","fmt","fmt","fmt","from","from","get_backup_path","into","into","ne","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","usage","0","0","1","1","OPT_BACKUP","OPT_BACKUP_NO_ARG","OPT_SUFFIX","backup","backup_no_args","suffix","Quotable","Quoted","borrow","borrow_mut","clone","clone_into","fmt","fmt","force","from","from","into","maybe_quote","maybe_quote","native","native_raw","print_verbatim","println_verbatim","quote","to_owned","to_string","try_from","try_into","type_id","Base16","Base2Lsbf","Base2Msbf","Base32","Base32Hex","Base64","Base64Url","Data","Decode","DecodeError","DecodeResult","DecodeZ85","EncodeError","Format","Io","Z85","Z85InputLenNotMultipleOf4","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","decode","decode","encode","encode","fmt","fmt","from","from","from","from","from","from","from","ignore_garbage","into","into","into","into","line_wrap","new","source","to_owned","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","wrap_print","wrap_write","0","0","0","Group","Locate","Passwd","belongs_to","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","fmt","fmt","from","from","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","into","into","locate","locate","locate","locate","locate","name","name","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid","0","ExitCode","FromIo","UError","UIoError","UResult","USimpleError","UUsageError","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","code","code","code","code","code","code","code","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","get_exit_code","into","into","into","into","map_err_context","message","message","new","new","new","new","set_exit_code","strip_errno","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","uio_error","usage","usage","usage","Existing","FileInformation","Logical","Missing","MissingHandling","None","Normal","Physical","ResolveMode","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","canonicalize","clone","clone","clone_into","clone_into","display_permissions","display_permissions_unix","eq","eq","eq","equivalent","equivalent","equivalent","file_size","fmt","fmt","from","from","from","from_file","from_path","has","hash","into","into","into","normalize_path","resolve_relative_path","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","BirthTime","FsMeta","FsUsage","MountInfo","StatFs","StatFs","avail_blocks","avail_blocks","bavail","bavail_top_bit_set","bfree","birth","block_size","block_size","blocks","blocksize","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","dev_id","dev_name","dummy","eq","equivalent","f_bavail","f_bavail","f_bfree","f_bfree","f_blocks","f_blocks","f_bsize","f_bsize","f_ffree","f_ffree","f_files","f_files","f_frsize","f_frsize","f_fsid","f_fsid","f_namelen","f_namelen","f_type","f_type","ffree","files","fmt","fmt","fmt","free_blocks","free_blocks","free_file_nodes","free_file_nodes","from","from","from","fs_type","fs_type","fs_type","fsid","fsid","hash","into","into","into","io_size","io_size","mount_dir","mount_option","mount_root","namelen","namelen","ne","new","pretty_birth","pretty_filetype","pretty_fstype","pretty_time","read_fs_list","remote","statfs","statfs_fn","statfs_fn","to_owned","to_owned","to_owned","total_blocks","total_blocks","total_file_nodes","total_file_nodes","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","Lines","borrow","borrow_mut","from","into","into_iter","lines","next","try_from","try_into","type_id","Memo","apply","borrow","borrow_mut","from","into","new","run_all","try_from","try_into","type_id","get_umask","parse_mode","parse_numeric","parse_symbolic","strip_minus_from_mode","is_wsl_1","is_wsl_2","mute_sigpipe_panic","ParseFailure","ParseSizeError","SizeTooBig","borrow","borrow_mut","description","eq","equivalent","fmt","fmt","from","into","ne","parse_size","to_string","try_from","try_into","type_id","0","0","from_str","All","All","Changes","ChownExecutor","First","Group","IfFrom","None","Normal","Silent","TraverseSymlinks","User","UserGroup","Verbose","Verbosity","VerbosityLevel","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chown_base","clone","clone","clone_into","clone_into","dereference","dest_gid","dest_uid","entries","eq","eq","eq","equivalent","exec","files","filter","fmt","fmt","from","from","from","from","from","groups_only","into","into","into","into","into","level","ne","options","preserve_root","recursive","to_owned","to_owned","traverse_symlinks","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","verbosity","wrap_chown","0","0","0","1","Group","Locate","Passwd","get_groups","get_groups_gnu","gid","gid","gid2grp","grp2gid","locate","name","name","uid","uid2usr","user_dir","user_info","user_passwd","user_shell","usr2uid","ARG_FILES","ARG_GROUP","ARG_OWNER","FROM","RECURSIVE","REFERENCE","dereference","preserve_root","traverse","verbosity","DEREFERENCE","NO_DEREFERENCE","NO_PRESERVE","PRESERVE","EVERY","NO_TRAVERSE","TRAVERSE","CHANGES","QUIET","SILENT","VERBOSE","Error","Result","pipe","splice","splice_exact","vmsplice","ChildExt","Code","ExitStatus","Signal","borrow","borrow_mut","clone","clone_into","code","eq","equivalent","fmt","fmt","from","getegid","geteuid","getgid","getuid","into","ne","send_signal","signal","success","to_owned","to_string","try_from","try_into","type_id","wait_or_timeout","0","0","Range","borrow","borrow_mut","cmp","complement","contain","eq","equivalent","fmt","from","from_list","from_str","high","into","low","ne","partial_cmp","try_from","try_into","type_id","RingBuffer","borrow","borrow_mut","data","from","from_iter","into","new","push_back","try_from","try_into","type_id","ALL_SIGNALS","DEFAULT_SIGNAL","is_signal","signal_by_name_or_value","signal_name_by_value","ACCOUNTING","BOOT_TIME","DEAD_PROCESS","DEFAULT_FILE","EMPTY","INIT_PROCESS","LOGIN_PROCESS","NEW_TIME","OLD_TIME","RUN_LVL","USER_PROCESS","UT_HOSTSIZE","UT_IDSIZE","UT_LINESIZE","UT_NAMESIZE","Utmpx","UtmpxIter","borrow","borrow","borrow_mut","borrow_mut","canon_host","drop","endutxent","exit_status","from","from","getutxent","host","into","into","into_inner","into_iter","is_user_process","iter_all_records","iter_all_records_from","login_time","next","pid","record_type","setutxent","terminal_suffix","try_from","try_from","try_into","try_into","tty_device","type_id","type_id","user","utmpxname","version_cmp"],"q":["uucore","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::ConversionResult","","uucore::backup_control","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::backup_control::BackupError","","","","uucore::backup_control::arguments","","","","","","uucore::display","","","","","","","","","","","","","","","","","","","","","","","","uucore::encoding","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::encoding::DecodeError","","","uucore::entries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::fs","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::fsext","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::lines","","","","","","","","","","","uucore::memo","","","","","","","","","","","uucore::mode","","","","","uucore::os","","uucore::panic","uucore::parse_size","","","","","","","","","","","","","","","","","","uucore::parse_size::ParseSizeError","","uucore::parse_time","uucore::perms","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::perms::IfFrom","","","","uucore::perms::entries","","","","","","","","","","","","","","","","","","","uucore::perms::options","","","","","","","","","","uucore::perms::options::dereference","","uucore::perms::options::preserve_root","","uucore::perms::options::traverse","","","uucore::perms::options::verbosity","","","","uucore::pipes","","","","","","uucore::process","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::process::ExitStatus","","uucore::ranges","","","","","","","","","","","","","","","","","","","","uucore::ringbuffer","","","","","","","","","","","","uucore::signals","","","","","uucore::utmpx","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","uucore::version_cmp"],"d":["","","","","","","","","","","Implement GNU-style backup functionality.","","","","","","Converts each iterator item to a String and collects these …","convenience function for a more slim interface","Display an error and std::process::exit","Unwrap a std::result::Result, crashing instead of …","","","Get password/group file entry","All utils return exit with an exit code. Usually, the …","Derive the complete execution phrase for “usage”.","","","","","Set of functions to manage files and symlinks","Set of functions to manage file systems","","","","","Iterate over lines, including the line ending character(s).","","Memo runner of printf Takes a format string and arguments","Set of functions to parse modes","","Custom panic hooks that allow silencing certain types of …","","","Common functions to manage permissions","","Set of functions to manage IDs","","A fixed-size ring buffer.","","Display a crate::error::UError and set global exit code.","Show an error to stderr in a similar style to GNU …","Show a warning to stderr in a similar style to GNU …","Display an error and set global exit code in error case.","Show a bad invocation help message in a similar style to …","Print a warning message to stderr.","","","","","","","","Shorthand to construct UIoError-instances.","Derive the utility name.","Aims to provide platform-independent methods to obtain …","","","","An ambiguous argument (e.g. ‘n’) was given as backup …","","","Backup error types.","Currently unused","Available backup modes.","Argument ‘existing’, ‘nil’","An invalid argument (e.g. ‘foo’) was given as backup …","Argument ‘none’, ‘off’","Argument ‘numbered’, ‘t’","Argument ‘simple’, ‘never’","Arguments for backup-related functionality.","","","","","","","","Determine the “mode” for the backup operation to …","Obtain the suffix to use for a backup.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","‘–backup’ argument","‘-b’ argument","‘-S, –suffix’ argument","An extension trait to apply quoting to strings.","A wrapper around string types for displaying with quoting …","","","","","","","Toggle forced quoting. If true, quotes are added even if …","","","","Like quote(), but don’t actually add quotes unless …","Like quote(), but don’t actually add quotes unless …","Quote a string with the default style for the platform.","Quote an OsStr with the default style for the platform.","Like println_verbatim, without the trailing newline.","Print a path (or OsStr-like object) directly to stdout, …","Returns an object that implements Display for printing …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Fetch desired entry.","","This is a wrapper function for libc::getgrouplist.","","","","","","","","","","","","","From: …","The list of group IDs returned from GNU’s groups and GNU…","AKA passwd.pw_gid","AKA group.gr_gid","","","","","","","","","","AKA passwd.pw_name","AKA group.gr_name","","","","","","","","","AKA passwd.pw_uid","","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell","","","A special error type that does not print any message when …","Enables the conversion from std::io::Error to UError and …","Custom errors defined by the utils and uucore.","Wrapper type around std::io::Error.","Result type that should be returned by all utils.","A simple error type with an exit code and a message that …","","","","","","","","","","Error code of a custom error.","Error code of a custom error.","","","","","","","","","","","","","","","","","","","Get the last exit code set with set_exit_code. The default …","","","","","","","","","","","","Set the exit code for the program if uumain returns Ok(()).","Strip the trailing “ (os error XX)“ from io error …","","","","","","","","","","","","","","","","","Shorthand to construct UIoError-instances.","Print usage help to a custom error.","Print usage help to a custom error.","","Resolve symbolic links, ignoring errors on the final …","Information to uniquely identify a file","Resolve ‘..’ elements before symlinks","Resolve symbolic links, ignoring errors on the non-final …","Controls how symbolic links should be handled when …","Do not resolve any symbolic links.","Return an error if any part of the path is missing.","Resolve symlinks as encountered when processing the path","Controls when symbolic links are resolved","","","","","","","Return the canonical, absolute form of a path.","","","","","","","","","","","","","","","","","","","Get information from a currently open file","Get information for a given path.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Read file system list.","","","","","","","","","","","","","","","","","","","","","An iterator over the lines of an instance of BufRead.","","","","","","Returns an iterator over the lines, including line ending …","","","","","","","","","","","","","","","","","","","","","Test if the program is running under WSL","","Terminate without error on panics that occur due to broken …","","","","","","","","","","","","","","Parse a size string into a number of bytes.","","","","","","","","","","","","","","","","","","","","","","","The various level of verbosity","","","","","","","","","","","Base implementation for chgrp and chown.","","","","","","","","Get password/group file entry","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Perform the change of owner on a path with the various …","","","","","","Fetch desired entry.","","From: …","The list of group IDs returned from GNU’s groups and GNU…","AKA passwd.pw_gid","AKA group.gr_gid","","","","AKA passwd.pw_name","AKA group.gr_name","AKA passwd.pw_uid","","AKA passwd.pw_dir","AKA passwd.pw_gecos","AKA passwd.pw_passwd","AKA passwd.pw_shell","","","","","","","","","","","","","","","","","","","","","","","Nix’s main error type.","Nix Result Type","A wrapper around nix::unistd::pipe that ensures the pipe …","Less noisy wrapper around nix::fcntl::splice.","Splice wrapper which fully finishes the write.","Copy data from bytes into target, which must be a pipe.","Missing methods for Child objects","","","","","","","","","","","","","","getegid() returns the effective group ID of the calling …","geteuid() returns the effective user ID of the calling …","getgid() returns the real group ID of the calling process.","getuid() returns the real user ID of the calling process.","","","Send a signal to a Child process.","","","","","","","","Wait for a process to finish or return after the specified …","","","","","","","","Test if at least one of the given Ranges contain the …","","","","","","","","","","","","","","","A fixed-size ring buffer backed by a VecDeque.","","","","","","","","Append a value to the end of the ring buffer.","","","","","","","","","","","","","","","","","","","","","","","","","Iterator of login records","","","","","Canonicalize host name using DNS","","","A.K.A. ut.ut_exit","","","","A.K.A. ut.ut_host","","","Consumes the Utmpx, returning the underlying C struct utmpx","","","Iterate through all the utmp records.","Iterate through all the utmp records from a specific file.","A.K.A. ut.ut_tv","","A.K.A. ut.ut_pid","A.K.A. ut.ut_type","","A.K.A. ut.ut_id","","","","","A.K.A. ut.ut_line","","","A.K.A. ut.ut_user","",""],"i":[0,1,0,2,2,0,1,2,1,0,0,0,2,1,2,1,3,3,0,0,0,0,0,0,0,1,1,2,1,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,2,1,2,1,0,0,0,0,4,5,6,0,0,0,6,0,7,6,7,7,7,0,7,6,7,6,7,7,6,0,0,7,6,7,6,7,6,6,7,6,0,7,6,6,7,6,7,6,7,6,7,6,6,8,9,8,9,0,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,11,11,10,10,0,0,11,10,10,10,10,10,12,12,12,12,12,12,12,0,13,0,0,13,0,0,13,12,14,14,15,13,12,14,15,13,12,12,12,0,15,0,15,13,13,14,15,13,13,13,13,12,15,14,15,13,12,15,15,13,12,13,14,15,13,12,14,15,13,12,14,15,13,12,0,0,16,17,18,0,0,0,19,19,20,19,20,19,20,19,20,19,20,19,20,0,0,19,20,0,0,19,20,21,19,19,20,20,19,20,19,20,19,20,19,20,19,20,19,0,19,19,19,19,0,22,0,0,0,0,0,0,0,23,24,25,22,23,24,25,22,26,26,23,24,22,23,24,23,23,24,24,25,25,22,22,23,24,25,25,22,0,23,24,25,22,27,23,24,23,24,25,22,0,0,23,24,25,22,23,24,25,22,23,24,25,22,23,24,25,22,0,26,26,24,28,0,29,28,0,29,28,29,0,30,28,29,30,28,29,0,28,29,28,29,0,0,30,28,29,30,28,29,30,28,29,30,28,29,30,30,0,30,30,28,29,0,0,28,29,30,28,29,30,28,29,30,28,29,0,0,0,0,0,0,31,32,33,33,33,34,31,32,33,33,35,33,32,35,33,32,35,33,32,35,33,32,35,35,35,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,33,33,35,33,32,31,32,31,32,35,33,32,31,32,35,31,32,32,35,33,32,31,32,35,35,35,31,32,32,33,34,0,0,0,0,35,0,0,0,35,33,32,31,32,31,32,35,33,32,35,33,32,35,33,32,0,36,36,36,36,36,0,36,36,36,36,0,37,37,37,37,37,37,37,37,37,37,0,0,0,0,0,0,0,0,38,0,38,38,38,38,38,38,38,38,38,38,38,0,38,38,38,38,39,40,0,41,42,43,0,42,41,0,42,43,43,0,41,41,43,0,0,41,44,43,45,42,41,44,43,45,42,0,43,45,43,45,44,44,44,0,43,45,42,42,44,44,44,43,45,41,44,43,45,42,45,41,44,43,45,42,45,45,0,44,44,43,45,44,41,44,43,45,42,41,44,43,45,42,41,44,43,45,42,44,0,46,47,48,48,0,0,0,0,0,19,20,0,0,21,19,20,19,0,19,19,19,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,0,49,49,49,49,49,49,49,49,49,49,49,0,0,0,0,49,49,50,49,49,49,49,49,49,49,50,51,52,0,53,53,53,0,0,53,53,53,53,53,53,53,53,53,53,53,53,53,53,0,54,54,54,54,54,54,54,54,54,54,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,56,55,56,55,56,0,55,55,56,0,55,55,56,55,56,55,55,55,55,56,55,55,0,55,55,56,55,56,55,55,56,55,0,0],"f":[null,null,null,null,null,null,null,null,[[],["vec",3,[["string",3]]]],[[]],null,null,[[]],[[]],[[]],[[]],[[["invalidencodinghandling",4]],["conversionresult",4]],[[],["conversionresult",4]],null,null,null,null,null,null,[[],["str",15]],[[["str",15]],["vec",3,[["string",3]]]],[[["str",15]],["vec",3,[["string",3]]]],[[]],[[]],null,null,[[],["bool",15]],null,[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],null,null,null,null,null,null,null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[],["str",15]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[],["backupmode",4]],[[]],[[],["i32",15]],[[["argmatches",3]],["uresult",6,[["backupmode",4]]]],[[["argmatches",3]],["string",3]],[[["backupmode",4]],["bool",15]],[[["backuperror",4]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["backupmode",4],["path",3],["str",15]],["option",4,[["pathbuf",3]]]],[[]],[[]],[[["backuperror",4]],["bool",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["bool",15]],null,null,null,null,null,null,null,[[],["arg",3]],[[],["arg",3]],[[],["arg",3]],null,null,[[]],[[]],[[],["quoted",3]],[[]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",4,[["error",3]]]],[[["bool",15]],["quoted",3]],[[]],[[],["quoted",3]],[[]],[[],["quoted",3]],[[],["quoted",3]],[[["str",15]],["quoted",3]],[[["osstr",3]],["quoted",3]],[[["asref",8,[["osstr",3]]]],["result",6]],[[["asref",8,[["osstr",3]]]],["result",6]],[[],["quoted",3]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["format",4]],[[]],[[["format",4]],["decoderesult",6]],[[],["decoderesult",6]],[[["format",4]],["result",4,[["string",3],["encodeerror",4]]]],[[],["result",4,[["string",3],["encodeerror",4]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["error",3]]],[[["decodeerror",4]]],[[["decodeerror",3]]],[[]],[[]],[[["bool",15]]],[[]],[[]],[[]],[[]],[[["usize",15]]],[[["format",4]]],[[],["option",4,[["error",8]]]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["data",3],["str",15]]],[[["write",8],["usize",15],["str",15]],["result",6]],null,null,null,null,null,null,[[],["vec",3,[["gid_t",6]]]],[[]],[[]],[[]],[[]],[[],["passwd",3]],[[],["group",3]],[[]],[[]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],[[["option",4,[["u32",15]]]],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],null,null,[[["gid_t",6]],["ioresult",6,[["string",3]]]],[[["str",15]],["ioresult",6,[["gid_t",6]]]],[[]],[[]],[[],["ioresult",6]],[[["uid_t",6]],["ioresult",6]],[[["str",15]],["ioresult",6]],[[["gid_t",6]],["ioresult",6]],[[["str",15]],["ioresult",6]],null,null,[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],null,[[["uid_t",6]],["ioresult",6,[["string",3]]]],null,null,null,null,[[["str",15]],["ioresult",6,[["uid_t",6]]]],null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["i32",15]],[[],["i32",15]],[[],["i32",15]],[[],["i32",15]],[[],["i32",15]],null,null,[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[]],[[["error",3]]],[[]],[[],["i32",15]],[[]],[[]],[[]],[[]],[[]],null,null,[[["i32",15],["into",8,[["string",3]]]],["box",3,[["uerror",8]]]],[[["i32",15],["into",8,[["string",3]]]],["box",3,[["uerror",8]]]],[[["errorkind",4],["into",8,[["string",3]]]],["box",3,[["uerror",8]]]],[[["i32",15]],["box",3,[["uerror",8]]]],[[["i32",15]]],[[["error",3]],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[["asref",8,[["path",3]]],["missinghandling",4],["resolvemode",4]],["ioresult",6,[["pathbuf",3]]]],[[],["missinghandling",4]],[[],["resolvemode",4]],[[]],[[]],[[["metadata",3],["bool",15]],["string",3]],[[["mode_t",6],["bool",15]],["string",3]],[[],["bool",15]],[[["missinghandling",4]],["bool",15]],[[["resolvemode",4]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["u64",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[],["option",4]],[[["bool",15]],["option",4]],null,[[]],[[]],[[]],[[]],[[["path",3]],["pathbuf",3]],[[["path",3]],["cow",4,[["path",3]]]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,[[],["i32",15]],[[],["u64",15]],[[],["u64",15]],null,null,null,[[],["string",3]],[[],["i64",15]],[[],["i64",15]],null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["mountinfo",3]],[[],["fsusage",3]],[[],["statfs",3]],[[]],[[]],[[]],null,null,null,[[["statfs",3]],["bool",15]],[[],["bool",15]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[]],[[],["i64",15]],[[],["i64",15]],null,[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[]],[[]],[[],["u64",15]],[[],["u64",15]],null,null,null,[[],["u64",15]],[[],["u64",15]],[[["statfs",3]],["bool",15]],[[["statfs",3]]],[[],["string",3]],[[["mode_t",6],["u64",15]],["str",15]],[[["i64",15]],["cow",4,[["str",15]]]],[[["i64",15],["i64",15]],["string",3]],[[],["vec",3,[["mountinfo",3]]]],null,[[["asref",8,[["path",3]]]],["result",4,[["statfs",3],["string",3]]]],null,[[],["i32",15]],[[]],[[]],[[]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[]],[[]],[[]],[[]],[[]],[[["u8",15]],["lines",3]],[[],["option",4,[["result",6,[["vec",3,[["u8",15]]]]]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[["peekable",3]]],[[]],[[]],[[]],[[]],[[["str",15],["peekable",3]]],[[["str",15]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["u32",15]],[[["str",15]],["result",4,[["mode_t",6],["string",3]]]],[[["u32",15],["str",15],["bool",15]],["result",4,[["u32",15],["string",3]]]],[[["u32",15],["str",15],["u32",15],["bool",15]],["result",4,[["u32",15],["string",3]]]],[[["vec",3]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[]],null,null,null,[[]],[[]],[[],["str",15]],[[["parsesizeerror",4]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",4,[["error",3]]]],[[]],[[]],[[["parsesizeerror",4]],["bool",15]],[[["str",15]],["result",4,[["usize",15],["parsesizeerror",4]]]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,[[["str",15]],["result",4,[["duration",3],["string",3]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["app",3],["str",15],["bool",15]],["uresult",6]],[[],["verbositylevel",4]],[[],["verbosity",3]],[[]],[[]],null,null,null,null,[[["verbositylevel",4]],["bool",15]],[[["verbosity",3]],["bool",15]],[[["traversesymlinks",4]],["bool",15]],[[],["bool",15]],[[],["uresult",6]],null,null,[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[]],null,[[["verbosity",3]],["bool",15]],null,null,null,[[]],[[]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,[[["asref",8,[["path",3]]],["metadata",3],["option",4,[["u32",15]]],["option",4,[["u32",15]]],["bool",15],["verbosity",3]],["result",4,[["string",3],["string",3]]]],null,null,null,null,null,null,null,[[],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],[[["option",4,[["u32",15]]]],["ioresult",6,[["vec",3,[["gid_t",6]]]]]],null,null,[[["gid_t",6]],["ioresult",6,[["string",3]]]],[[["str",15]],["ioresult",6,[["gid_t",6]]]],[[],["ioresult",6]],null,null,null,[[["uid_t",6]],["ioresult",6,[["string",3]]]],null,null,null,null,[[["str",15]],["ioresult",6,[["uid_t",6]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["result",6]],[[["usize",15]],["result",6,[["usize",15]]]],[[["usize",15]],["result",6]],[[],["result",6,[["usize",15]]]],null,null,null,null,[[]],[[]],[[],["exitstatus",4]],[[]],[[],["option",4,[["i32",15]]]],[[["exitstatus",4]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[],["gid_t",6]],[[],["uid_t",6]],[[],["gid_t",6]],[[],["uid_t",6]],[[]],[[["exitstatus",4]],["bool",15]],[[["usize",15]],["result",6]],[[],["option",4,[["i32",15]]]],[[],["bool",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[["duration",3]],["result",6,[["option",4,[["exitstatus",4]]]]]],null,null,null,[[]],[[]],[[["range",3]],["ordering",4]],[[],["vec",3,[["range",3]]]],[[["usize",15]],["bool",15]],[[["range",3]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[]],[[["str",15]],["result",4,[["vec",3],["string",3]]]],[[["str",15]],["result",4,[["str",15]]]],null,[[]],null,[[["range",3]],["bool",15]],[[["range",3]],["option",4,[["ordering",4]]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,[[]],[[]],null,[[]],[[["usize",15]]],[[]],[[["usize",15]]],[[],["option",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,[[["usize",15]],["bool",15]],[[["str",15]],["option",4,[["usize",15]]]],[[["usize",15]],["option",4,[["str",15]]]],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[],["ioresult",6,[["string",3]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["string",3]],[[]],[[]],[[],["utmpx",3]],[[]],[[],["bool",15]],[[],["utmpxiter",3]],[[["asref",8,[["path",3]]]],["utmpxiter",3]],[[],["tm",3]],[[],["option",4]],[[],["i32",15]],[[],["i16",15]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["string",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["string",3]],[[],["i32",15]],[[["str",15],["str",15]],["ordering",4]]],"p":[[4,"ConversionResult"],[4,"InvalidEncodingHandling"],[8,"Args"],[13,"Complete"],[13,"Lossy"],[4,"BackupError"],[4,"BackupMode"],[13,"InvalidArgument"],[13,"AmbiguousArgument"],[3,"Quoted"],[8,"Quotable"],[4,"Format"],[4,"DecodeError"],[4,"EncodeError"],[3,"Data"],[13,"Decode"],[13,"DecodeZ85"],[13,"Io"],[3,"Passwd"],[3,"Group"],[8,"Locate"],[3,"ExitCode"],[3,"USimpleError"],[3,"UUsageError"],[3,"UIoError"],[8,"UError"],[8,"FromIo"],[4,"MissingHandling"],[4,"ResolveMode"],[3,"FileInformation"],[8,"FsMeta"],[3,"statfs_fn"],[3,"FsUsage"],[8,"BirthTime"],[3,"MountInfo"],[3,"Lines"],[3,"Memo"],[4,"ParseSizeError"],[13,"ParseFailure"],[13,"SizeTooBig"],[4,"IfFrom"],[4,"TraverseSymlinks"],[4,"VerbosityLevel"],[3,"ChownExecutor"],[3,"Verbosity"],[13,"User"],[13,"Group"],[13,"UserGroup"],[4,"ExitStatus"],[8,"ChildExt"],[13,"Code"],[13,"Signal"],[3,"Range"],[3,"RingBuffer"],[3,"Utmpx"],[3,"UtmpxIter"]]},\ "uucore_procs":{"doc":"","t":[23],"n":["main"],"q":["uucore_procs"],"d":[""],"i":[0],"f":[null],"p":[]},\ "uudoc":{"doc":"","t":[6,5,5,5,5,5,5,5],"n":["UtilityMap","main","util_map","write_description","write_markdown","write_options","write_usage","write_version"],"q":["uudoc","","","","","","",""],"d":["","","","","","","",""],"i":[0,0,0,0,0,0,0,0],"f":[null,[[],["result",6]],[[],["map",3,[["str",15]]]],[[["app",3]],["result",6]],[[["app",3],["str",15]],["result",6]],[[["app",3]],["result",6]],[[["app",3],["str",15]],["result",6]],[[["app",3]],["result",6]]],"p":[]},\ "wc":{"doc":"","t":[5],"n":["main"],"q":["wc"],"d":[""],"i":[0],"f":[[[]]],"p":[]},\ diff --git a/dev/source-files.js b/dev/source-files.js index 1c398212e..941e59493 100644 --- a/dev/source-files.js +++ b/dev/source-files.js @@ -115,7 +115,7 @@ sourcesIndex["uu_csplit"] = {"name":"","files":["csplit.rs","csplit_error.rs","p sourcesIndex["uu_cut"] = {"name":"","files":["cut.rs","searcher.rs"]}; sourcesIndex["uu_date"] = {"name":"","files":["date.rs"]}; sourcesIndex["uu_dd"] = {"name":"","files":["conversion_tables.rs","datastructures.rs","dd.rs","parseargs.rs"]}; -sourcesIndex["uu_df"] = {"name":"","files":["df.rs"]}; +sourcesIndex["uu_df"] = {"name":"","files":["df.rs","table.rs"]}; sourcesIndex["uu_dircolors"] = {"name":"","files":["colors.rs","dircolors.rs"]}; sourcesIndex["uu_dirname"] = {"name":"","files":["dirname.rs"]}; sourcesIndex["uu_du"] = {"name":"","files":["du.rs"]}; @@ -129,7 +129,7 @@ sourcesIndex["uu_fmt"] = {"name":"","files":["fmt.rs","linebreak.rs","parasplit. sourcesIndex["uu_fold"] = {"name":"","files":["fold.rs"]}; sourcesIndex["uu_groups"] = {"name":"","files":["groups.rs"]}; sourcesIndex["uu_hashsum"] = {"name":"","files":["digest.rs","hashsum.rs"]}; -sourcesIndex["uu_head"] = {"name":"","files":["head.rs","lines.rs","parse.rs","take.rs"]}; +sourcesIndex["uu_head"] = {"name":"","files":["head.rs","parse.rs","take.rs"]}; sourcesIndex["uu_hostid"] = {"name":"","files":["hostid.rs"]}; sourcesIndex["uu_hostname"] = {"name":"","files":["hostname.rs"]}; sourcesIndex["uu_id"] = {"name":"","files":["id.rs"]}; @@ -177,7 +177,7 @@ sourcesIndex["uu_stdbuf"] = {"name":"","files":["stdbuf.rs"]}; sourcesIndex["uu_sum"] = {"name":"","files":["sum.rs"]}; sourcesIndex["uu_sync"] = {"name":"","files":["sync.rs"]}; sourcesIndex["uu_tac"] = {"name":"","files":["error.rs","tac.rs"]}; -sourcesIndex["uu_tail"] = {"name":"","dirs":[{"name":"platform","files":["mod.rs","unix.rs"]}],"files":["chunks.rs","lines.rs","parse.rs","tail.rs"]}; +sourcesIndex["uu_tail"] = {"name":"","dirs":[{"name":"platform","files":["mod.rs","unix.rs"]}],"files":["chunks.rs","parse.rs","tail.rs"]}; sourcesIndex["uu_tee"] = {"name":"","files":["tee.rs"]}; sourcesIndex["uu_test"] = {"name":"","files":["parser.rs","test.rs"]}; sourcesIndex["uu_timeout"] = {"name":"","files":["timeout.rs"]}; @@ -197,7 +197,7 @@ sourcesIndex["uu_wc"] = {"name":"","files":["count_fast.rs","countable.rs","wc.r sourcesIndex["uu_who"] = {"name":"","files":["who.rs"]}; sourcesIndex["uu_whoami"] = {"name":"","dirs":[{"name":"platform","files":["mod.rs","unix.rs"]}],"files":["whoami.rs"]}; sourcesIndex["uu_yes"] = {"name":"","files":["splice.rs","yes.rs"]}; -sourcesIndex["uucore"] = {"name":"","dirs":[{"name":"features","dirs":[{"name":"tokenize","dirs":[{"name":"num_format","dirs":[{"name":"formatters","dirs":[{"name":"base_conv","files":["mod.rs","tests.rs"]}],"files":["cninetyninehexfloatf.rs","decf.rs","float_common.rs","floatf.rs","intf.rs","mod.rs","scif.rs"]}],"files":["format_field.rs","formatter.rs","mod.rs","num_format.rs"]}],"files":["mod.rs","sub.rs","token.rs","unescaped_text.rs"]}],"files":["encoding.rs","entries.rs","fs.rs","fsext.rs","memo.rs","mode.rs","perms.rs","pipes.rs","process.rs","ringbuffer.rs","signals.rs","utmpx.rs"]},{"name":"mods","files":["backup_control.rs","display.rs","error.rs","os.rs","panic.rs","ranges.rs","version_cmp.rs"]},{"name":"parser","files":["parse_size.rs","parse_time.rs"]}],"files":["features.rs","lib.rs","macros.rs","mods.rs","parser.rs"]}; +sourcesIndex["uucore"] = {"name":"","dirs":[{"name":"features","dirs":[{"name":"tokenize","dirs":[{"name":"num_format","dirs":[{"name":"formatters","dirs":[{"name":"base_conv","files":["mod.rs","tests.rs"]}],"files":["cninetyninehexfloatf.rs","decf.rs","float_common.rs","floatf.rs","intf.rs","mod.rs","scif.rs"]}],"files":["format_field.rs","formatter.rs","mod.rs","num_format.rs"]}],"files":["mod.rs","sub.rs","token.rs","unescaped_text.rs"]}],"files":["encoding.rs","entries.rs","fs.rs","fsext.rs","lines.rs","memo.rs","mode.rs","perms.rs","pipes.rs","process.rs","ringbuffer.rs","signals.rs","utmpx.rs"]},{"name":"mods","files":["backup_control.rs","display.rs","error.rs","os.rs","panic.rs","ranges.rs","version_cmp.rs"]},{"name":"parser","files":["parse_size.rs","parse_time.rs"]}],"files":["features.rs","lib.rs","macros.rs","mods.rs","parser.rs"]}; sourcesIndex["uucore_procs"] = {"name":"","files":["lib.rs"]}; sourcesIndex["uudoc"] = {"name":"","files":["uudoc.rs"]}; sourcesIndex["wc"] = {"name":"","files":["main.rs"]}; diff --git a/dev/src/uu_dd/dd.rs.html b/dev/src/uu_dd/dd.rs.html index 851fd7fc6..6cd057af7 100644 --- a/dev/src/uu_dd/dd.rs.html +++ b/dev/src/uu_dd/dd.rs.html @@ -1165,6 +1165,16 @@ 1164 1165 1166 +1167 +1168 +1169 +1170 +1171 +1172 +1173 +1174 +1175 +1176
// This file is part of the uutils coreutils package.
 //
 // (c) Tyler Steele <tyler.steele@protonmail.com>
@@ -1209,6 +1219,7 @@
 use signal_hook::consts::signal;
 use uucore::display::Quotable;
 use uucore::error::{FromIo, UResult, USimpleError};
+use uucore::show_error;
 use uucore::InvalidEncodingHandling;
 
 const ABOUT: &str = "copy, and optionally convert, a file system resource";
@@ -1247,9 +1258,12 @@
         };
 
         if let Some(amt) = skip {
-            let mut buf = vec![BUF_INIT_BYTE; amt];
-            i.force_fill(&mut buf, amt)
+            let num_bytes_read = i
+                .force_fill(amt.try_into().unwrap())
                 .map_err_context(|| "failed to read input".to_string())?;
+            if num_bytes_read < amt {
+                show_error!("'standard input': cannot skip to specified offset");
+            }
         }
 
         Ok(i)
@@ -1431,17 +1445,19 @@
         })
     }
 
-    /// Force-fills a buffer, ignoring zero-length reads which would otherwise be
-    /// interpreted as EOF.
-    /// Note: This will not return unless the source (eventually) produces
-    /// enough bytes to meet target_len.
-    fn force_fill(&mut self, buf: &mut [u8], target_len: usize) -> std::io::Result<usize> {
-        let mut base_idx = 0;
-        while base_idx < target_len {
-            base_idx += self.read(&mut buf[base_idx..target_len])?;
-        }
-
-        Ok(base_idx)
+    /// Read the specified number of bytes from this reader.
+    ///
+    /// On success, this method returns the number of bytes read. If
+    /// this reader has fewer than `n` bytes available, then it reads
+    /// as many as possible. In that case, this method returns a
+    /// number less than `n`.
+    ///
+    /// # Errors
+    ///
+    /// If there is a problem reading.
+    fn force_fill(&mut self, n: u64) -> std::io::Result<usize> {
+        let mut buf = vec![];
+        self.take(n).read_to_end(&mut buf)
     }
 }
 
@@ -2027,10 +2043,14 @@
             }
         });
 
+        let mut progress_as_secs = 0;
         while let Ok(update) = rx.recv() {
             // (Re)print status line if progress is requested.
-            if Some(StatusLevel::Progress) == print_level {
+            if Some(StatusLevel::Progress) == print_level
+                && update.duration.as_secs() >= progress_as_secs
+            {
                 reprint_prog_line(&update);
+                progress_as_secs = update.duration.as_secs() + 1;
             }
             // Handle signals
             #[cfg(target_os = "linux")]
diff --git a/dev/src/uu_df/df.rs.html b/dev/src/uu_df/df.rs.html
index 03e20a674..67fa1243c 100644
--- a/dev/src/uu_df/df.rs.html
+++ b/dev/src/uu_df/df.rs.html
@@ -383,146 +383,6 @@
 382
 383
 384
-385
-386
-387
-388
-389
-390
-391
-392
-393
-394
-395
-396
-397
-398
-399
-400
-401
-402
-403
-404
-405
-406
-407
-408
-409
-410
-411
-412
-413
-414
-415
-416
-417
-418
-419
-420
-421
-422
-423
-424
-425
-426
-427
-428
-429
-430
-431
-432
-433
-434
-435
-436
-437
-438
-439
-440
-441
-442
-443
-444
-445
-446
-447
-448
-449
-450
-451
-452
-453
-454
-455
-456
-457
-458
-459
-460
-461
-462
-463
-464
-465
-466
-467
-468
-469
-470
-471
-472
-473
-474
-475
-476
-477
-478
-479
-480
-481
-482
-483
-484
-485
-486
-487
-488
-489
-490
-491
-492
-493
-494
-495
-496
-497
-498
-499
-500
-501
-502
-503
-504
-505
-506
-507
-508
-509
-510
-511
-512
-513
-514
-515
-516
-517
-518
-519
-520
-521
-522
-523
-524
 
// This file is part of the uutils coreutils package.
 //
 // (c) Fangxu Hu <framlog@gmail.com>
@@ -530,8 +390,8 @@
 //
 // For the full copyright and license information, please view the LICENSE file
 // that was distributed with this source code.
+mod table;
 
-use uucore::error::UError;
 use uucore::error::UResult;
 #[cfg(unix)]
 use uucore::fsext::statfs_fn;
@@ -539,14 +399,11 @@
 
 use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
 
-use number_prefix::NumberPrefix;
 use std::cell::Cell;
 use std::collections::HashMap;
 use std::collections::HashSet;
-use std::error::Error;
 #[cfg(unix)]
 use std::ffi::CString;
-use std::fmt::Display;
 use std::iter::FromIterator;
 #[cfg(unix)]
 use std::mem;
@@ -554,6 +411,8 @@
 #[cfg(windows)]
 use std::path::Path;
 
+use crate::table::{DisplayRow, Header, Row};
+
 static ABOUT: &str = "Show information about the file system on which each FILE resides,\n\
                       or all file systems by default.";
 
@@ -583,6 +442,7 @@
     exclude: HashSet<String>,
 }
 
+#[derive(Default)]
 struct Options {
     show_local_fs: bool,
     show_all_fs: bool,
@@ -761,64 +621,6 @@
         .collect()
 }
 
-/// Convert `value` to a human readable string based on `base`.
-/// e.g. It returns 1G when value is 1 * 1024 * 1024 * 1024 and base is 1024.
-/// Note: It returns `value` if `base` isn't positive.
-fn human_readable(value: u64, base: i64) -> UResult<String> {
-    let base_str = match base {
-        d if d < 0 => value.to_string(),
-
-        // ref: [Binary prefix](https://en.wikipedia.org/wiki/Binary_prefix) @@ <https://archive.is/cnwmF>
-        // ref: [SI/metric prefix](https://en.wikipedia.org/wiki/Metric_prefix) @@ <https://archive.is/QIuLj>
-        1000 => match NumberPrefix::decimal(value as f64) {
-            NumberPrefix::Standalone(bytes) => bytes.to_string(),
-            NumberPrefix::Prefixed(prefix, bytes) => format!("{:.1}{}", bytes, prefix.symbol()),
-        },
-
-        1024 => match NumberPrefix::binary(value as f64) {
-            NumberPrefix::Standalone(bytes) => bytes.to_string(),
-            NumberPrefix::Prefixed(prefix, bytes) => format!("{:.1}{}", bytes, prefix.symbol()),
-        },
-
-        _ => return Err(DfError::InvalidBaseValue(base.to_string()).into()),
-    };
-
-    Ok(base_str)
-}
-
-fn use_size(free_size: u64, total_size: u64) -> String {
-    if total_size == 0 {
-        return String::from("-");
-    }
-    return format!(
-        "{:.0}%",
-        100f64 - 100f64 * (free_size as f64 / total_size as f64)
-    );
-}
-
-#[derive(Debug)]
-enum DfError {
-    InvalidBaseValue(String),
-}
-
-impl Display for DfError {
-    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
-        match self {
-            DfError::InvalidBaseValue(s) => write!(f, "Internal error: Unknown base value {}", s),
-        }
-    }
-}
-
-impl Error for DfError {}
-
-impl UError for DfError {
-    fn code(&self) -> i32 {
-        match self {
-            DfError::InvalidBaseValue(_) => 1,
-        }
-    }
-}
-
 #[uucore::main]
 pub fn uumain(args: impl uucore::Args) -> UResult<()> {
     let usage = usage();
@@ -839,98 +641,16 @@
 
     let opt = Options::from(&matches);
 
-    let fs_list = filter_mount_list(read_fs_list(), &paths, &opt)
+    let mounts = read_fs_list();
+    let data: Vec<Row> = filter_mount_list(mounts, &paths, &opt)
         .into_iter()
         .filter_map(Filesystem::new)
         .filter(|fs| fs.usage.blocks != 0 || opt.show_all_fs || opt.show_listed_fs)
-        .collect::<Vec<_>>();
-
-    // set headers
-    let mut header = vec!["Filesystem"];
-    if opt.show_fs_type {
-        header.push("Type");
-    }
-    header.extend_from_slice(&if opt.show_inode_instead {
-        // spell-checker:disable-next-line
-        ["Inodes", "Iused", "IFree", "IUses%"]
-    } else {
-        [
-            if opt.human_readable_base == -1 {
-                "1k-blocks"
-            } else {
-                "Size"
-            },
-            "Used",
-            "Available",
-            "Use%",
-        ]
-    });
-    if cfg!(target_os = "macos") && !opt.show_inode_instead {
-        header.insert(header.len() - 1, "Capacity");
-    }
-    header.push("Mounted on");
-
-    for (idx, title) in header.iter().enumerate() {
-        if idx == 0 || idx == header.len() - 1 {
-            print!("{0: <16} ", title);
-        } else if opt.show_fs_type && idx == 1 {
-            print!("{0: <5} ", title);
-        } else if idx == header.len() - 2 {
-            print!("{0: >5} ", title);
-        } else {
-            print!("{0: >12} ", title);
-        }
-    }
-    println!();
-    for fs in &fs_list {
-        print!("{0: <16} ", fs.mount_info.dev_name);
-        if opt.show_fs_type {
-            print!("{0: <5} ", fs.mount_info.fs_type);
-        }
-        if opt.show_inode_instead {
-            print!(
-                "{0: >12} ",
-                human_readable(fs.usage.files, opt.human_readable_base)?
-            );
-            print!(
-                "{0: >12} ",
-                human_readable(fs.usage.files - fs.usage.ffree, opt.human_readable_base)?
-            );
-            print!(
-                "{0: >12} ",
-                human_readable(fs.usage.ffree, opt.human_readable_base)?
-            );
-            print!(
-                "{0: >5} ",
-                format!(
-                    "{0:.1}%",
-                    100f64 - 100f64 * (fs.usage.ffree as f64 / fs.usage.files as f64)
-                )
-            );
-        } else {
-            let total_size = fs.usage.blocksize * fs.usage.blocks;
-            let free_size = fs.usage.blocksize * fs.usage.bfree;
-            print!(
-                "{0: >12} ",
-                human_readable(total_size, opt.human_readable_base)?
-            );
-            print!(
-                "{0: >12} ",
-                human_readable(total_size - free_size, opt.human_readable_base)?
-            );
-            print!(
-                "{0: >12} ",
-                human_readable(free_size, opt.human_readable_base)?
-            );
-            if cfg!(target_os = "macos") {
-                let used = fs.usage.blocks - fs.usage.bfree;
-                let blocks = used + fs.usage.bavail;
-                print!("{0: >12} ", use_size(used, blocks));
-            }
-            print!("{0: >5} ", use_size(free_size, total_size));
-        }
-        print!("{0: <16}", fs.mount_info.mount_dir);
-        println!();
+        .map(Into::into)
+        .collect();
+    println!("{}", Header::new(&opt));
+    for row in data {
+        println!("{}", DisplayRow::new(row, &opt));
     }
 
     Ok(())
diff --git a/dev/src/uu_df/table.rs.html b/dev/src/uu_df/table.rs.html
new file mode 100644
index 000000000..5ee14f8a0
--- /dev/null
+++ b/dev/src/uu_df/table.rs.html
@@ -0,0 +1,1006 @@
+table.rs - source
+    
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 41
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+ 50
+ 51
+ 52
+ 53
+ 54
+ 55
+ 56
+ 57
+ 58
+ 59
+ 60
+ 61
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 68
+ 69
+ 70
+ 71
+ 72
+ 73
+ 74
+ 75
+ 76
+ 77
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+ 85
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+ 94
+ 95
+ 96
+ 97
+ 98
+ 99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
+463
+464
+465
+466
+467
+468
+469
+470
+471
+472
+473
+474
+475
+476
+477
+478
+479
+480
+481
+482
+483
+484
+485
+486
+487
+488
+489
+490
+491
+492
+493
+494
+495
+496
+497
+498
+499
+500
+501
+
//  * This file is part of the uutils coreutils package.
+//  *
+//  * For the full copyright and license information, please view the LICENSE
+//  * file that was distributed with this source code.
+// spell-checker:ignore tmpfs
+//! The filesystem usage data table.
+//!
+//! A table comprises a header row ([`Header`]) and a collection of
+//! data rows ([`Row`]), one per filesystem. To display a [`Row`],
+//! combine it with [`Options`] in the [`DisplayRow`] struct; the
+//! [`DisplayRow`] implements [`std::fmt::Display`].
+use number_prefix::NumberPrefix;
+
+use crate::{Filesystem, Options};
+use uucore::fsext::{FsUsage, MountInfo};
+
+use std::fmt;
+
+/// A row in the filesystem usage data table.
+///
+/// A row comprises several pieces of information, including the
+/// filesystem device, the mountpoint, the number of bytes used, etc.
+pub(crate) struct Row {
+    /// Name of the device on which the filesystem lives.
+    fs_device: String,
+
+    /// Type of filesystem (for example, `"ext4"`, `"tmpfs"`, etc.).
+    fs_type: String,
+
+    /// Path at which the filesystem is mounted.
+    fs_mount: String,
+
+    /// Total number of bytes in the filesystem regardless of whether they are used.
+    bytes: u64,
+
+    /// Number of used bytes.
+    bytes_used: u64,
+
+    /// Number of free bytes.
+    bytes_free: u64,
+
+    /// Percentage of bytes that are used, given as a float between 0 and 1.
+    ///
+    /// If the filesystem has zero bytes, then this is `None`.
+    bytes_usage: Option<f64>,
+
+    /// Percentage of bytes that are available, given as a float between 0 and 1.
+    ///
+    /// These are the bytes that are available to non-privileged processes.
+    ///
+    /// If the filesystem has zero bytes, then this is `None`.
+    #[cfg(target_os = "macos")]
+    bytes_capacity: Option<f64>,
+
+    /// Total number of inodes in the filesystem.
+    inodes: u64,
+
+    /// Number of used inodes.
+    inodes_used: u64,
+
+    /// Number of free inodes.
+    inodes_free: u64,
+
+    /// Percentage of inodes that are used, given as a float between 0 and 1.
+    ///
+    /// If the filesystem has zero bytes, then this is `None`.
+    inodes_usage: Option<f64>,
+}
+
+impl From<Filesystem> for Row {
+    fn from(fs: Filesystem) -> Self {
+        let MountInfo {
+            dev_name,
+            fs_type,
+            mount_dir,
+            ..
+        } = fs.mount_info;
+        let FsUsage {
+            blocksize,
+            blocks,
+            bfree,
+            #[cfg(target_os = "macos")]
+            bavail,
+            files,
+            ffree,
+            ..
+        } = fs.usage;
+        Self {
+            fs_device: dev_name,
+            fs_type,
+            fs_mount: mount_dir,
+            bytes: blocksize * blocks,
+            bytes_used: blocksize * (blocks - bfree),
+            bytes_free: blocksize * bfree,
+            bytes_usage: if blocks == 0 {
+                None
+            } else {
+                Some(((blocks - bfree) as f64) / blocks as f64)
+            },
+            #[cfg(target_os = "macos")]
+            bytes_capacity: if bavail == 0 {
+                None
+            } else {
+                Some(bavail as f64 / ((blocks - bfree + bavail) as f64))
+            },
+            inodes: files,
+            inodes_used: files - ffree,
+            inodes_free: ffree,
+            inodes_usage: if files == 0 {
+                None
+            } else {
+                Some(ffree as f64 / files as f64)
+            },
+        }
+    }
+}
+
+/// A displayable wrapper around a [`Row`].
+///
+/// The `options` control how the information in the row gets displayed.
+pub(crate) struct DisplayRow<'a> {
+    /// The data in this row.
+    row: Row,
+
+    /// Options that control how to display the data.
+    options: &'a Options,
+    // TODO We don't need all of the command-line options here. Some
+    // of the command-line options indicate which rows to include or
+    // exclude. Other command-line options indicate which columns to
+    // include or exclude. Still other options indicate how to format
+    // numbers. We could split the options up into those groups to
+    // reduce the coupling between this `table.rs` module and the main
+    // `df.rs` module.
+}
+
+impl<'a> DisplayRow<'a> {
+    /// Instantiate this struct.
+    pub(crate) fn new(row: Row, options: &'a Options) -> Self {
+        Self { row, options }
+    }
+
+    /// Get a string giving the scaled version of the input number.
+    ///
+    /// The scaling factor is defined in the `options` field.
+    ///
+    /// # Errors
+    ///
+    /// If the scaling factor is not 1000, 1024, or a negative number.
+    fn scaled(&self, size: u64) -> Result<String, fmt::Error> {
+        // TODO The argument-parsing code should be responsible for
+        // ensuring that the `human_readable_base` number is
+        // positive. Then we could remove the `Err` case from this
+        // function.
+        //
+        // TODO We should not be using a negative number to indicate
+        // default behavior. The default behavior for `df` is to show
+        // sizes in blocks of 1K bytes each, so we should just do
+        // that.
+        //
+        // TODO Support arbitrary positive scaling factors (from the
+        // `--block-size` command-line argument).
+        let number_prefix = match self.options.human_readable_base {
+            1000 => NumberPrefix::decimal(size as f64),
+            1024 => NumberPrefix::binary(size as f64),
+            d if d < 0 => return Ok(size.to_string()),
+            _ => return Err(fmt::Error {}),
+        };
+        match number_prefix {
+            NumberPrefix::Standalone(bytes) => Ok(bytes.to_string()),
+            NumberPrefix::Prefixed(prefix, bytes) => Ok(format!("{:.1}{}", bytes, prefix.symbol())),
+        }
+    }
+
+    /// Convert a float between 0 and 1 into a percentage string.
+    ///
+    /// If `None`, return the string `"-"` instead.
+    fn percentage(fraction: Option<f64>) -> String {
+        match fraction {
+            None => "-".to_string(),
+            Some(x) => format!("{:.0}%", 100.0 * x),
+        }
+    }
+
+    /// Write the bytes data for this row.
+    ///
+    /// # Errors
+    ///
+    /// If there is a problem writing to `f`.
+    ///
+    /// If the scaling factor is not 1000, 1024, or a negative number.
+    fn fmt_bytes(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "{0: >12} ", self.scaled(self.row.bytes)?)?;
+        write!(f, "{0: >12} ", self.scaled(self.row.bytes_used)?)?;
+        write!(f, "{0: >12} ", self.scaled(self.row.bytes_free)?)?;
+        #[cfg(target_os = "macos")]
+        write!(
+            f,
+            "{0: >12} ",
+            DisplayRow::percentage(self.row.bytes_capacity)
+        )?;
+        write!(f, "{0: >5} ", DisplayRow::percentage(self.row.bytes_usage))?;
+        Ok(())
+    }
+
+    /// Write the inodes data for this row.
+    ///
+    /// # Errors
+    ///
+    /// If there is a problem writing to `f`.
+    ///
+    /// If the scaling factor is not 1000, 1024, or a negative number.
+    fn fmt_inodes(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "{0: >12} ", self.scaled(self.row.inodes)?)?;
+        write!(f, "{0: >12} ", self.scaled(self.row.inodes_used)?)?;
+        write!(f, "{0: >12} ", self.scaled(self.row.inodes_free)?)?;
+        write!(f, "{0: >5} ", DisplayRow::percentage(self.row.inodes_usage))?;
+        Ok(())
+    }
+}
+
+impl fmt::Display for DisplayRow<'_> {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "{0: <16} ", self.row.fs_device)?;
+        if self.options.show_fs_type {
+            write!(f, "{0: <5} ", self.row.fs_type)?;
+        }
+        if self.options.show_inode_instead {
+            self.fmt_inodes(f)?;
+        } else {
+            self.fmt_bytes(f)?;
+        }
+        write!(f, "{0: <16}", self.row.fs_mount)?;
+        Ok(())
+    }
+}
+
+/// The header row.
+///
+/// The `options` control which columns are displayed.
+pub(crate) struct Header<'a> {
+    /// Options that control which columns are displayed.
+    options: &'a Options,
+}
+
+impl<'a> Header<'a> {
+    /// Instantiate this struct.
+    pub(crate) fn new(options: &'a Options) -> Self {
+        Self { options }
+    }
+}
+
+impl fmt::Display for Header<'_> {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "{0: <16} ", "Filesystem")?;
+        if self.options.show_fs_type {
+            write!(f, "{0: <5} ", "Type")?;
+        }
+        if self.options.show_inode_instead {
+            write!(f, "{0: >12} ", "Inodes")?;
+            write!(f, "{0: >12} ", "IUsed")?;
+            write!(f, "{0: >12} ", "IFree")?;
+            write!(f, "{0: >5} ", "IUse%")?;
+        } else {
+            if self.options.human_readable_base == -1 {
+                write!(f, "{0: >12} ", "1k-blocks")?;
+            } else {
+                write!(f, "{0: >12} ", "Size")?;
+            };
+            write!(f, "{0: >12} ", "Used")?;
+            write!(f, "{0: >12} ", "Available")?;
+            #[cfg(target_os = "macos")]
+            write!(f, "{0: >12} ", "Capacity")?;
+            write!(f, "{0: >5} ", "Use%")?;
+        }
+        write!(f, "{0: <16} ", "Mounted on")?;
+        Ok(())
+    }
+}
+
+#[cfg(test)]
+mod tests {
+
+    use crate::table::{DisplayRow, Header, Row};
+    use crate::Options;
+
+    #[test]
+    fn test_header_display() {
+        let options = Options {
+            human_readable_base: -1,
+            ..Default::default()
+        };
+        assert_eq!(
+            Header::new(&options).to_string(),
+            "Filesystem          1k-blocks         Used    Available  Use% Mounted on       "
+        );
+    }
+
+    #[test]
+    fn test_header_display_fs_type() {
+        let options = Options {
+            human_readable_base: -1,
+            show_fs_type: true,
+            ..Default::default()
+        };
+        assert_eq!(
+            Header::new(&options).to_string(),
+            "Filesystem       Type     1k-blocks         Used    Available  Use% Mounted on       "
+        );
+    }
+
+    #[test]
+    fn test_header_display_inode() {
+        let options = Options {
+            human_readable_base: -1,
+            show_inode_instead: true,
+            ..Default::default()
+        };
+        assert_eq!(
+            Header::new(&options).to_string(),
+            "Filesystem             Inodes        IUsed        IFree IUse% Mounted on       "
+        );
+    }
+
+    #[test]
+    fn test_header_display_human_readable_binary() {
+        let options = Options {
+            human_readable_base: 1024,
+            ..Default::default()
+        };
+        assert_eq!(
+            Header::new(&options).to_string(),
+            "Filesystem               Size         Used    Available  Use% Mounted on       "
+        );
+    }
+
+    #[test]
+    fn test_header_display_human_readable_si() {
+        let options = Options {
+            human_readable_base: 1000,
+            ..Default::default()
+        };
+        assert_eq!(
+            Header::new(&options).to_string(),
+            "Filesystem               Size         Used    Available  Use% Mounted on       "
+        );
+    }
+
+    #[test]
+    fn test_row_display() {
+        let options = Options {
+            human_readable_base: -1,
+            ..Default::default()
+        };
+        let row = Row {
+            fs_device: "my_device".to_string(),
+            fs_type: "my_type".to_string(),
+            fs_mount: "my_mount".to_string(),
+
+            bytes: 100,
+            bytes_used: 25,
+            bytes_free: 75,
+            bytes_usage: Some(0.25),
+
+            #[cfg(target_os = "macos")]
+            bytes_capacity: Some(0.5),
+
+            inodes: 10,
+            inodes_used: 2,
+            inodes_free: 8,
+            inodes_usage: Some(0.2),
+        };
+        assert_eq!(
+            DisplayRow::new(row, &options).to_string(),
+            "my_device                 100           25           75   25% my_mount        "
+        );
+    }
+
+    #[test]
+    fn test_row_display_fs_type() {
+        let options = Options {
+            human_readable_base: -1,
+            show_fs_type: true,
+            ..Default::default()
+        };
+        let row = Row {
+            fs_device: "my_device".to_string(),
+            fs_type: "my_type".to_string(),
+            fs_mount: "my_mount".to_string(),
+
+            bytes: 100,
+            bytes_used: 25,
+            bytes_free: 75,
+            bytes_usage: Some(0.25),
+
+            #[cfg(target_os = "macos")]
+            bytes_capacity: Some(0.5),
+
+            inodes: 10,
+            inodes_used: 2,
+            inodes_free: 8,
+            inodes_usage: Some(0.2),
+        };
+        assert_eq!(
+            DisplayRow::new(row, &options).to_string(),
+            "my_device        my_type          100           25           75   25% my_mount        "
+        );
+    }
+
+    #[test]
+    fn test_row_display_inodes() {
+        let options = Options {
+            human_readable_base: -1,
+            show_inode_instead: true,
+            ..Default::default()
+        };
+        let row = Row {
+            fs_device: "my_device".to_string(),
+            fs_type: "my_type".to_string(),
+            fs_mount: "my_mount".to_string(),
+
+            bytes: 100,
+            bytes_used: 25,
+            bytes_free: 75,
+            bytes_usage: Some(0.25),
+
+            #[cfg(target_os = "macos")]
+            bytes_capacity: Some(0.5),
+
+            inodes: 10,
+            inodes_used: 2,
+            inodes_free: 8,
+            inodes_usage: Some(0.2),
+        };
+        assert_eq!(
+            DisplayRow::new(row, &options).to_string(),
+            "my_device                  10            2            8   20% my_mount        "
+        );
+    }
+
+    #[test]
+    fn test_row_display_human_readable_si() {
+        let options = Options {
+            human_readable_base: 1000,
+            show_fs_type: true,
+            ..Default::default()
+        };
+        let row = Row {
+            fs_device: "my_device".to_string(),
+            fs_type: "my_type".to_string(),
+            fs_mount: "my_mount".to_string(),
+
+            bytes: 4000,
+            bytes_used: 1000,
+            bytes_free: 3000,
+            bytes_usage: Some(0.25),
+
+            #[cfg(target_os = "macos")]
+            bytes_capacity: Some(0.5),
+
+            inodes: 10,
+            inodes_used: 2,
+            inodes_free: 8,
+            inodes_usage: Some(0.2),
+        };
+        assert_eq!(
+            DisplayRow::new(row, &options).to_string(),
+            "my_device        my_type         4.0k         1.0k         3.0k   25% my_mount        "
+        );
+    }
+
+    #[test]
+    fn test_row_display_human_readable_binary() {
+        let options = Options {
+            human_readable_base: 1024,
+            show_fs_type: true,
+            ..Default::default()
+        };
+        let row = Row {
+            fs_device: "my_device".to_string(),
+            fs_type: "my_type".to_string(),
+            fs_mount: "my_mount".to_string(),
+
+            bytes: 4096,
+            bytes_used: 1024,
+            bytes_free: 3072,
+            bytes_usage: Some(0.25),
+
+            #[cfg(target_os = "macos")]
+            bytes_capacity: Some(0.5),
+
+            inodes: 10,
+            inodes_used: 2,
+            inodes_free: 8,
+            inodes_usage: Some(0.2),
+        };
+        assert_eq!(
+            DisplayRow::new(row, &options).to_string(),
+            "my_device        my_type        4.0Ki        1.0Ki        3.0Ki   25% my_mount        "
+        );
+    }
+}
+
+
+ \ No newline at end of file diff --git a/dev/src/uu_hashsum/digest.rs.html b/dev/src/uu_hashsum/digest.rs.html index 0f736be32..8cde0af42 100644 --- a/dev/src/uu_hashsum/digest.rs.html +++ b/dev/src/uu_hashsum/digest.rs.html @@ -442,19 +442,19 @@ impl Digest for sha1::Sha1 { fn new() -> Self { - Self::new() + Self::default() } fn input(&mut self, input: &[u8]) { - self.update(input); + digest::Digest::update(self, input); } fn result(&mut self, out: &mut [u8]) { - out.copy_from_slice(&self.digest().bytes()); + digest::Digest::finalize_into_reset(self, out.into()); } fn reset(&mut self) { - self.reset(); + *self = Self::new(); } fn output_bits(&self) -> usize { diff --git a/dev/src/uu_head/head.rs.html b/dev/src/uu_head/head.rs.html index 09f839fe6..d9050bf12 100644 --- a/dev/src/uu_head/head.rs.html +++ b/dev/src/uu_head/head.rs.html @@ -611,29 +611,6 @@ 610 611 612 -613 -614 -615 -616 -617 -618 -619 -620 -621 -622 -623 -624 -625 -626 -627 -628 -629 -630 -631 -632 -633 -634 -635
//  * This file is part of the uutils coreutils package.
 //  *
 //  * For the full copyright and license information, please view the LICENSE
@@ -641,12 +618,13 @@
 
 // spell-checker:ignore (vars) zlines BUFWRITER seekable
 
-use clap::{crate_version, App, AppSettings, Arg};
+use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
 use std::convert::{TryFrom, TryInto};
 use std::ffi::OsString;
 use std::io::{self, BufWriter, ErrorKind, Read, Seek, SeekFrom, Write};
 use uucore::display::Quotable;
 use uucore::error::{FromIo, UError, UResult, USimpleError};
+use uucore::lines::lines;
 use uucore::show;
 
 const BUF_SIZE: usize = 65536;
@@ -671,10 +649,8 @@
     pub const ZERO_NAME: &str = "ZERO";
     pub const FILES_NAME: &str = "FILE";
 }
-mod lines;
 mod parse;
 mod take;
-use lines::zlines;
 use take::take_all_but;
 use take::take_lines;
 
@@ -740,25 +716,42 @@
         )
         .arg(Arg::new(options::FILES_NAME).multiple_occurrences(true))
 }
-#[derive(PartialEq, Debug, Clone, Copy)]
-enum Modes {
-    Lines(usize),
-    Bytes(usize),
+
+#[derive(Debug, PartialEq)]
+enum Mode {
+    FirstLines(usize),
+    AllButLastLines(usize),
+    FirstBytes(usize),
+    AllButLastBytes(usize),
 }
 
-impl Default for Modes {
+impl Default for Mode {
     fn default() -> Self {
-        Self::Lines(10)
+        Self::FirstLines(10)
     }
 }
 
-fn parse_mode<F>(src: &str, closure: F) -> Result<(Modes, bool), String>
-where
-    F: FnOnce(usize) -> Modes,
-{
-    match parse::parse_num(src) {
-        Ok((n, last)) => Ok((closure(n), last)),
-        Err(e) => Err(e.to_string()),
+impl Mode {
+    fn from(matches: &ArgMatches) -> Result<Self, String> {
+        if let Some(v) = matches.value_of(options::BYTES_NAME) {
+            let (n, all_but_last) =
+                parse::parse_num(v).map_err(|err| format!("invalid number of bytes: {}", err))?;
+            if all_but_last {
+                Ok(Self::AllButLastBytes(n))
+            } else {
+                Ok(Self::FirstBytes(n))
+            }
+        } else if let Some(v) = matches.value_of(options::LINES_NAME) {
+            let (n, all_but_last) =
+                parse::parse_num(v).map_err(|err| format!("invalid number of lines: {}", err))?;
+            if all_but_last {
+                Ok(Self::AllButLastLines(n))
+            } else {
+                Ok(Self::FirstLines(n))
+            }
+        } else {
+            Ok(Default::default())
+        }
     }
 }
 
@@ -793,8 +786,7 @@
     pub quiet: bool,
     pub verbose: bool,
     pub zeroed: bool,
-    pub all_but_last: bool,
-    pub mode: Modes,
+    pub mode: Mode,
     pub files: Vec<String>,
 }
 
@@ -809,18 +801,7 @@
         options.verbose = matches.is_present(options::VERBOSE_NAME);
         options.zeroed = matches.is_present(options::ZERO_NAME);
 
-        let mode_and_from_end = if let Some(v) = matches.value_of(options::BYTES_NAME) {
-            parse_mode(v, Modes::Bytes)
-                .map_err(|err| format!("invalid number of bytes: {}", err))?
-        } else if let Some(v) = matches.value_of(options::LINES_NAME) {
-            parse_mode(v, Modes::Lines)
-                .map_err(|err| format!("invalid number of lines: {}", err))?
-        } else {
-            (Modes::Lines(10), false)
-        };
-
-        options.mode = mode_and_from_end.0;
-        options.all_but_last = mode_and_from_end.1;
+        options.mode = Mode::from(&matches)?;
 
         options.files = match matches.values_of(options::FILES_NAME) {
             Some(v) => v.map(|s| s.to_owned()).collect(),
@@ -917,12 +898,14 @@
     if zero {
         let stdout = std::io::stdout();
         let mut stdout = stdout.lock();
-        for bytes in take_all_but(zlines(input), n) {
+        for bytes in take_all_but(lines(input, b'\0'), n) {
             stdout.write_all(&bytes?)?;
         }
     } else {
-        for line in take_all_but(input.lines(), n) {
-            println!("{}", line?);
+        let stdout = std::io::stdout();
+        let mut stdout = stdout.lock();
+        for bytes in take_all_but(lines(input, b'\n'), n) {
+            stdout.write_all(&bytes?)?;
         }
     }
     Ok(())
@@ -1010,9 +993,8 @@
 }
 
 fn head_backwards_file(input: &mut std::fs::File, options: &HeadOptions) -> std::io::Result<()> {
-    assert!(options.all_but_last);
     match options.mode {
-        Modes::Bytes(n) => {
+        Mode::AllButLastBytes(n) => {
             let size = input.metadata()?.len().try_into().unwrap();
             if n >= size {
                 return Ok(());
@@ -1023,31 +1005,29 @@
                 )?;
             }
         }
-        Modes::Lines(n) => {
+        Mode::AllButLastLines(n) => {
             let found = find_nth_line_from_end(input, n, options.zeroed)?;
             read_n_bytes(
                 &mut std::io::BufReader::with_capacity(BUF_SIZE, input),
                 found,
             )?;
         }
+        _ => unreachable!(),
     }
     Ok(())
 }
 
 fn head_file(input: &mut std::fs::File, options: &HeadOptions) -> std::io::Result<()> {
-    if options.all_but_last {
-        head_backwards_file(input, options)
-    } else {
-        match options.mode {
-            Modes::Bytes(n) => {
-                read_n_bytes(&mut std::io::BufReader::with_capacity(BUF_SIZE, input), n)
-            }
-            Modes::Lines(n) => read_n_lines(
-                &mut std::io::BufReader::with_capacity(BUF_SIZE, input),
-                n,
-                options.zeroed,
-            ),
+    match options.mode {
+        Mode::FirstBytes(n) => {
+            read_n_bytes(&mut std::io::BufReader::with_capacity(BUF_SIZE, input), n)
         }
+        Mode::FirstLines(n) => read_n_lines(
+            &mut std::io::BufReader::with_capacity(BUF_SIZE, input),
+            n,
+            options.zeroed,
+        ),
+        Mode::AllButLastBytes(_) | Mode::AllButLastLines(_) => head_backwards_file(input, options),
     }
 }
 
@@ -1065,19 +1045,11 @@
                 let stdin = std::io::stdin();
                 let mut stdin = stdin.lock();
                 match options.mode {
-                    Modes::Bytes(n) => {
-                        if options.all_but_last {
-                            read_but_last_n_bytes(&mut stdin, n)
-                        } else {
-                            read_n_bytes(&mut stdin, n)
-                        }
-                    }
-                    Modes::Lines(n) => {
-                        if options.all_but_last {
-                            read_but_last_n_lines(&mut stdin, n, options.zeroed)
-                        } else {
-                            read_n_lines(&mut stdin, n, options.zeroed)
-                        }
+                    Mode::FirstBytes(n) => read_n_bytes(&mut stdin, n),
+                    Mode::AllButLastBytes(n) => read_but_last_n_bytes(&mut stdin, n),
+                    Mode::FirstLines(n) => read_n_lines(&mut stdin, n, options.zeroed),
+                    Mode::AllButLastLines(n) => {
+                        read_but_last_n_lines(&mut stdin, n, options.zeroed)
                     }
                 }
             }
@@ -1148,17 +1120,16 @@
         let args = options("-n -10M -vz").unwrap();
         assert!(args.zeroed);
         assert!(args.verbose);
-        assert!(args.all_but_last);
-        assert_eq!(args.mode, Modes::Lines(10 * 1024 * 1024));
+        assert_eq!(args.mode, Mode::AllButLastLines(10 * 1024 * 1024));
     }
     #[test]
     fn test_gnu_compatibility() {
         let args = options("-n 1 -c 1 -n 5 -c kiB -vqvqv").unwrap(); // spell-checker:disable-line
-        assert!(args.mode == Modes::Bytes(1024));
+        assert!(args.mode == Mode::FirstBytes(1024));
         assert!(args.verbose);
-        assert_eq!(options("-5").unwrap().mode, Modes::Lines(5));
-        assert_eq!(options("-2b").unwrap().mode, Modes::Bytes(1024));
-        assert_eq!(options("-5 -c 1").unwrap().mode, Modes::Bytes(1));
+        assert_eq!(options("-5").unwrap().mode, Mode::FirstLines(5));
+        assert_eq!(options("-2b").unwrap().mode, Mode::FirstBytes(1024));
+        assert_eq!(options("-5 -c 1").unwrap().mode, Mode::FirstBytes(1));
     }
     #[test]
     fn all_args_test() {
@@ -1169,10 +1140,10 @@
         assert!(options("-v").unwrap().verbose);
         assert!(options("--zero-terminated").unwrap().zeroed);
         assert!(options("-z").unwrap().zeroed);
-        assert_eq!(options("--lines 15").unwrap().mode, Modes::Lines(15));
-        assert_eq!(options("-n 15").unwrap().mode, Modes::Lines(15));
-        assert_eq!(options("--bytes 15").unwrap().mode, Modes::Bytes(15));
-        assert_eq!(options("-c 15").unwrap().mode, Modes::Bytes(15));
+        assert_eq!(options("--lines 15").unwrap().mode, Mode::FirstLines(15));
+        assert_eq!(options("-n 15").unwrap().mode, Mode::FirstLines(15));
+        assert_eq!(options("--bytes 15").unwrap().mode, Mode::FirstBytes(15));
+        assert_eq!(options("-c 15").unwrap().mode, Mode::FirstBytes(15));
     }
     #[test]
     fn test_options_errors() {
@@ -1186,26 +1157,9 @@
         assert!(!opts.verbose);
         assert!(!opts.quiet);
         assert!(!opts.zeroed);
-        assert!(!opts.all_but_last);
-        assert_eq!(opts.mode, Modes::Lines(10));
+        assert_eq!(opts.mode, Mode::FirstLines(10));
         assert!(opts.files.is_empty());
     }
-    #[test]
-    fn test_parse_mode() {
-        assert_eq!(
-            parse_mode("123", Modes::Lines),
-            Ok((Modes::Lines(123), false))
-        );
-        assert_eq!(
-            parse_mode("-456", Modes::Bytes),
-            Ok((Modes::Bytes(456), true))
-        );
-        assert!(parse_mode("Nonsensical Nonsense", Modes::Bytes).is_err());
-        #[cfg(target_pointer_width = "64")]
-        assert!(parse_mode("1Y", Modes::Lines).is_err());
-        #[cfg(target_pointer_width = "32")]
-        assert!(parse_mode("1T", Modes::Bytes).is_err());
-    }
     fn arg_outputs(src: &str) -> Result<String, String> {
         let split = src.split_whitespace().map(OsString::from);
         match arg_iterate(split) {
diff --git a/dev/src/uu_head/lines.rs.html b/dev/src/uu_head/lines.rs.html
deleted file mode 100644
index 20a1095e0..000000000
--- a/dev/src/uu_head/lines.rs.html
+++ /dev/null
@@ -1,154 +0,0 @@
-lines.rs - source
-    
 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-19
-20
-21
-22
-23
-24
-25
-26
-27
-28
-29
-30
-31
-32
-33
-34
-35
-36
-37
-38
-39
-40
-41
-42
-43
-44
-45
-46
-47
-48
-49
-50
-51
-52
-53
-54
-55
-56
-57
-58
-59
-60
-61
-62
-63
-64
-65
-66
-67
-68
-69
-70
-71
-72
-73
-74
-75
-
// spell-checker:ignore (vars) zline zlines
-
-//! Iterate over zero-terminated lines.
-use std::io::BufRead;
-
-/// The zero byte, representing the null character.
-const ZERO: u8 = 0;
-
-/// Returns an iterator over the lines of the given reader.
-///
-/// The iterator returned from this function will yield instances of
-/// [`std::io::Result`]<[`Vec`]<[`u8`]>>, representing the bytes of the line
-/// *including* the null character (with the possible exception of the
-/// last line, which may not have one).
-///
-/// # Examples
-///
-/// ```rust,ignore
-/// use std::io::Cursor;
-///
-/// let cursor = Cursor::new(b"x\0y\0z\0");
-/// let mut iter = zlines(cursor).map(|l| l.unwrap());
-/// assert_eq!(iter.next(), Some(b"x\0".to_vec()));
-/// assert_eq!(iter.next(), Some(b"y\0".to_vec()));
-/// assert_eq!(iter.next(), Some(b"z\0".to_vec()));
-/// assert_eq!(iter.next(), None);
-/// ```
-pub fn zlines<B>(buf: B) -> ZLines<B> {
-    ZLines { buf }
-}
-
-/// An iterator over the zero-terminated lines of an instance of `BufRead`.
-pub struct ZLines<B> {
-    buf: B,
-}
-
-impl<B: BufRead> Iterator for ZLines<B> {
-    type Item = std::io::Result<Vec<u8>>;
-
-    fn next(&mut self) -> Option<std::io::Result<Vec<u8>>> {
-        let mut buf = Vec::new();
-        match self.buf.read_until(ZERO, &mut buf) {
-            Ok(0) => None,
-            Ok(_) => Some(Ok(buf)),
-            Err(e) => Some(Err(e)),
-        }
-    }
-}
-
-#[cfg(test)]
-mod tests {
-
-    use crate::lines::zlines;
-    use std::io::Cursor;
-
-    #[test]
-    fn test_null_terminated() {
-        let cursor = Cursor::new(b"x\0y\0z\0");
-        let mut iter = zlines(cursor).map(|l| l.unwrap());
-        assert_eq!(iter.next(), Some(b"x\0".to_vec()));
-        assert_eq!(iter.next(), Some(b"y\0".to_vec()));
-        assert_eq!(iter.next(), Some(b"z\0".to_vec()));
-        assert_eq!(iter.next(), None);
-    }
-
-    #[test]
-    fn test_not_null_terminated() {
-        let cursor = Cursor::new(b"x\0y\0z");
-        let mut iter = zlines(cursor).map(|l| l.unwrap());
-        assert_eq!(iter.next(), Some(b"x\0".to_vec()));
-        assert_eq!(iter.next(), Some(b"y\0".to_vec()));
-        assert_eq!(iter.next(), Some(b"z".to_vec()));
-        assert_eq!(iter.next(), None);
-    }
-}
-
-
- \ No newline at end of file diff --git a/dev/src/uu_ls/ls.rs.html b/dev/src/uu_ls/ls.rs.html index cfdb54ba0..93ca6782a 100644 --- a/dev/src/uu_ls/ls.rs.html +++ b/dev/src/uu_ls/ls.rs.html @@ -2583,18 +2583,6 @@ 2582 2583 2584 -2585 -2586 -2587 -2588 -2589 -2590 -2591 -2592 -2593 -2594 -2595 -2596
// This file is part of the uutils coreutils package.
 //
 // (c) Jeremiah Peschka <jeremiah.peschka@gmail.com>
@@ -2921,16 +2909,16 @@
 
 struct PaddingCollection {
     #[cfg(unix)]
-    longest_inode_len: usize,
-    longest_link_count_len: usize,
-    longest_uname_len: usize,
-    longest_group_len: usize,
-    longest_context_len: usize,
-    longest_size_len: usize,
+    inode: usize,
+    link_count: usize,
+    uname: usize,
+    group: usize,
+    context: usize,
+    size: usize,
     #[cfg(unix)]
-    longest_major_len: usize,
+    major: usize,
     #[cfg(unix)]
-    longest_minor_len: usize,
+    minor: usize,
 }
 
 impl Config {
@@ -3902,9 +3890,9 @@ only ignore '.' and '..'.",
         )
 }
 
-/// Represents a Path along with it's associated data
-/// Any data that will be reused several times makes sense to be added to this structure
-/// Caching data here helps eliminate redundant syscalls to fetch same information
+/// Represents a Path along with it's associated data.
+/// Any data that will be reused several times makes sense to be added to this structure.
+/// Caching data here helps eliminate redundant syscalls to fetch same information.
 #[derive(Debug)]
 struct PathData {
     // Result<MetaData> got from symlink_metadata() or metadata() based on config
@@ -4305,92 +4293,10 @@ only ignore '.' and '..'.",
     // option, print the security context to the left of the size column.
 
     if config.format == Format::Long {
-        #[cfg(unix)]
-        let (
-            mut longest_inode_len,
-            mut longest_link_count_len,
-            mut longest_uname_len,
-            mut longest_group_len,
-            mut longest_context_len,
-            mut longest_size_len,
-            mut longest_major_len,
-            mut longest_minor_len,
-        ) = (1, 1, 1, 1, 1, 1, 1, 1);
-
-        #[cfg(not(unix))]
-        let (
-            mut longest_link_count_len,
-            mut longest_uname_len,
-            mut longest_group_len,
-            mut longest_context_len,
-            mut longest_size_len,
-        ) = (1, 1, 1, 1, 1);
-
-        #[cfg(unix)]
-        for item in items {
-            let context_len = item.security_context.len();
-            let (link_count_len, uname_len, group_len, size_len, major_len, minor_len, inode_len) =
-                display_dir_entry_size(item, config, out);
-            longest_inode_len = inode_len.max(longest_inode_len);
-            longest_link_count_len = link_count_len.max(longest_link_count_len);
-            longest_uname_len = uname_len.max(longest_uname_len);
-            longest_group_len = group_len.max(longest_group_len);
-            if config.context {
-                longest_context_len = context_len.max(longest_context_len);
-            }
-            if items.len() == 1usize {
-                longest_size_len = 0usize;
-                longest_major_len = 0usize;
-                longest_minor_len = 0usize;
-            } else {
-                longest_major_len = major_len.max(longest_major_len);
-                longest_minor_len = minor_len.max(longest_minor_len);
-                longest_size_len = size_len
-                    .max(longest_size_len)
-                    .max(longest_major_len + longest_minor_len + 2usize);
-            }
-        }
-
-        #[cfg(not(unix))]
-        for item in items {
-            let context_len = item.security_context.len();
-            let (
-                link_count_len,
-                uname_len,
-                group_len,
-                size_len,
-                _major_len,
-                _minor_len,
-                _inode_len,
-            ) = display_dir_entry_size(item, config, out);
-            longest_link_count_len = link_count_len.max(longest_link_count_len);
-            longest_uname_len = uname_len.max(longest_uname_len);
-            longest_group_len = group_len.max(longest_group_len);
-            if config.context {
-                longest_context_len = context_len.max(longest_context_len);
-            }
-            longest_size_len = size_len.max(longest_size_len);
-        }
+        let padding_collection = calculate_padding_collection(items, config, out);
 
         for item in items {
-            display_item_long(
-                item,
-                &PaddingCollection {
-                    #[cfg(unix)]
-                    longest_inode_len,
-                    longest_link_count_len,
-                    longest_uname_len,
-                    longest_group_len,
-                    longest_context_len,
-                    longest_size_len,
-                    #[cfg(unix)]
-                    longest_major_len,
-                    #[cfg(unix)]
-                    longest_minor_len,
-                },
-                config,
-                out,
-            );
+            display_item_long(item, &padding_collection, config, out);
         }
     } else {
         let mut longest_context_len = 1;
@@ -4563,11 +4469,7 @@ only ignore '.' and '..'.",
         #[cfg(unix)]
         {
             if config.inode {
-                let _ = write!(
-                    out,
-                    "{} ",
-                    pad_left(&get_inode(md), padding.longest_inode_len),
-                );
+                let _ = write!(out, "{} ", pad_left(&get_inode(md), padding.inode),);
             }
         }
 
@@ -4582,14 +4484,14 @@ only ignore '.' and '..'.",
             } else {
                 ""
             },
-            pad_left(&display_symlink_count(md), padding.longest_link_count_len),
+            pad_left(&display_symlink_count(md), padding.link_count),
         );
 
         if config.long.owner {
             let _ = write!(
                 out,
                 " {}",
-                pad_right(&display_uname(md, config), padding.longest_uname_len),
+                pad_right(&display_uname(md, config), padding.uname),
             );
         }
 
@@ -4597,7 +4499,7 @@ only ignore '.' and '..'.",
             let _ = write!(
                 out,
                 " {}",
-                pad_right(&display_group(md, config), padding.longest_group_len),
+                pad_right(&display_group(md, config), padding.group),
             );
         }
 
@@ -4605,7 +4507,7 @@ only ignore '.' and '..'.",
             let _ = write!(
                 out,
                 " {}",
-                pad_right(&item.security_context, padding.longest_context_len),
+                pad_right(&item.security_context, padding.context),
             );
         }
 
@@ -4615,13 +4517,13 @@ only ignore '.' and '..'.",
             let _ = write!(
                 out,
                 " {}",
-                pad_right(&display_uname(md, config), padding.longest_uname_len),
+                pad_right(&display_uname(md, config), padding.uname),
             );
         }
 
         match display_size_or_rdev(md, config) {
             SizeOrDeviceId::Size(size) => {
-                let _ = write!(out, " {}", pad_left(&size, padding.longest_size_len),);
+                let _ = write!(out, " {}", pad_left(&size, padding.size),);
             }
             SizeOrDeviceId::Device(major, minor) => {
                 let _ = write!(
@@ -4632,10 +4534,10 @@ only ignore '.' and '..'.",
                         #[cfg(not(unix))]
                         0usize,
                         #[cfg(unix)]
-                        padding.longest_major_len.max(
+                        padding.major.max(
                             padding
-                                .longest_size_len
-                                .saturating_sub(padding.longest_minor_len.saturating_add(2usize))
+                                .size
+                                .saturating_sub(padding.minor.saturating_add(2usize))
                         )
                     ),
                     pad_left(
@@ -4643,7 +4545,7 @@ only ignore '.' and '..'.",
                         #[cfg(not(unix))]
                         0usize,
                         #[cfg(unix)]
-                        padding.longest_minor_len,
+                        padding.minor,
                     ),
                 );
             }
@@ -4657,7 +4559,7 @@ only ignore '.' and '..'.",
         #[cfg(unix)]
         {
             if config.inode {
-                let _ = write!(out, "{} ", pad_left("?", padding.longest_inode_len),);
+                let _ = write!(out, "{} ", pad_left("?", padding.inode),);
             }
         }
 
@@ -4705,29 +4607,29 @@ only ignore '.' and '..'.",
             } else {
                 ""
             },
-            pad_left("?", padding.longest_link_count_len),
+            pad_left("?", padding.link_count),
         );
 
         if config.long.owner {
-            let _ = write!(out, " {}", pad_right("?", padding.longest_uname_len));
+            let _ = write!(out, " {}", pad_right("?", padding.uname));
         }
 
         if config.long.group {
-            let _ = write!(out, " {}", pad_right("?", padding.longest_group_len));
+            let _ = write!(out, " {}", pad_right("?", padding.group));
         }
 
         if config.context {
             let _ = write!(
                 out,
                 " {}",
-                pad_right(&item.security_context, padding.longest_context_len)
+                pad_right(&item.security_context, padding.context)
             );
         }
 
         // Author is only different from owner on GNU/Hurd, so we reuse
         // the owner, since GNU/Hurd is not currently supported by Rust.
         if config.long.author {
-            let _ = write!(out, " {}", pad_right("?", padding.longest_uname_len));
+            let _ = write!(out, " {}", pad_right("?", padding.uname));
         }
 
         let dfn = display_file_name(item, config, None, 0, out).contents;
@@ -4736,7 +4638,7 @@ only ignore '.' and '..'.",
         let _ = writeln!(
             out,
             " {} {} {}",
-            pad_left("?", padding.longest_size_len),
+            pad_left("?", padding.size),
             pad_left("?", date_len),
             dfn,
         );
@@ -5191,6 +5093,80 @@ only ignore '.' and '..'.",
         substitute_string
     }
 }
+
+#[cfg(unix)]
+fn calculate_padding_collection(
+    items: &[PathData],
+    config: &Config,
+    out: &mut BufWriter<Stdout>,
+) -> PaddingCollection {
+    let mut padding_collections = PaddingCollection {
+        inode: 1,
+        link_count: 1,
+        uname: 1,
+        group: 1,
+        context: 1,
+        size: 1,
+        major: 1,
+        minor: 1,
+    };
+
+    for item in items {
+        let context_len = item.security_context.len();
+        let (link_count_len, uname_len, group_len, size_len, major_len, minor_len, inode_len) =
+            display_dir_entry_size(item, config, out);
+        padding_collections.inode = inode_len.max(padding_collections.inode);
+        padding_collections.link_count = link_count_len.max(padding_collections.link_count);
+        padding_collections.uname = uname_len.max(padding_collections.uname);
+        padding_collections.group = group_len.max(padding_collections.group);
+        if config.context {
+            padding_collections.context = context_len.max(padding_collections.context);
+        }
+        if items.len() == 1usize {
+            padding_collections.size = 0usize;
+            padding_collections.major = 0usize;
+            padding_collections.minor = 0usize;
+        } else {
+            padding_collections.major = major_len.max(padding_collections.major);
+            padding_collections.minor = minor_len.max(padding_collections.minor);
+            padding_collections.size = size_len
+                .max(padding_collections.size)
+                .max(padding_collections.major + padding_collections.minor + 2usize);
+        }
+    }
+
+    padding_collections
+}
+
+#[cfg(not(unix))]
+fn calculate_padding_collection(
+    items: &[PathData],
+    config: &Config,
+    out: &mut BufWriter<Stdout>,
+) -> PaddingCollection {
+    let mut padding_collections = PaddingCollection {
+        link_count: 1,
+        uname: 1,
+        group: 1,
+        context: 1,
+        size: 1,
+    };
+
+    for item in items {
+        let context_len = item.security_context.len();
+        let (link_count_len, uname_len, group_len, size_len, _major_len, _minor_len, _inode_len) =
+            display_dir_entry_size(item, config, out);
+        padding_collections.link_count = link_count_len.max(padding_collections.link_count);
+        padding_collections.uname = uname_len.max(padding_collections.uname);
+        padding_collections.group = group_len.max(padding_collections.group);
+        if config.context {
+            padding_collections.context = context_len.max(padding_collections.context);
+        }
+        padding_collections.size = size_len.max(padding_collections.size);
+    }
+
+    padding_collections
+}
 
\ No newline at end of file diff --git a/dev/src/uu_paste/paste.rs.html b/dev/src/uu_paste/paste.rs.html index 3ad322cf4..21b6f9cf5 100644 --- a/dev/src/uu_paste/paste.rs.html +++ b/dev/src/uu_paste/paste.rs.html @@ -153,6 +153,12 @@ 152 153 154 +155 +156 +157 +158 +159 +160
//  * This file is part of the uutils coreutils package.
 //  *
 //  * (c) Alex Lyon <arcterus@mail.com>
@@ -164,8 +170,7 @@
 
 use clap::{crate_version, App, AppSettings, Arg};
 use std::fs::File;
-use std::io::{stdin, BufRead, BufReader, Read};
-use std::iter::repeat;
+use std::io::{stdin, stdout, BufRead, BufReader, Read, Write};
 use std::path::Path;
 use uucore::error::{FromIo, UResult};
 
@@ -232,7 +237,7 @@ FILE, separated by TABs, to standard output.";
 }
 
 fn paste(filenames: Vec<String>, serial: bool, delimiters: &str) -> UResult<()> {
-    let mut files = vec![];
+    let mut files = Vec::with_capacity(filenames.len());
     for name in filenames {
         let file = if name == "-" {
             None
@@ -244,55 +249,62 @@ FILE, separated by TABs, to standard output.";
         files.push(file);
     }
 
-    let delimiters: Vec<String> = unescape(delimiters)
-        .chars()
-        .map(|x| x.to_string())
-        .collect();
+    let delimiters: Vec<char> = unescape(delimiters).chars().collect();
     let mut delim_count = 0;
+    let stdout = stdout();
+    let mut stdout = stdout.lock();
 
+    let mut output = String::new();
     if serial {
         for file in &mut files {
-            let mut output = String::new();
+            output.clear();
             loop {
-                let mut line = String::new();
-                match read_line(file.as_mut(), &mut line) {
+                match read_line(file.as_mut(), &mut output) {
                     Ok(0) => break,
                     Ok(_) => {
-                        output.push_str(line.trim_end());
-                        output.push_str(&delimiters[delim_count % delimiters.len()]);
+                        if output.ends_with('\n') {
+                            output.pop();
+                        }
+                        output.push(delimiters[delim_count % delimiters.len()]);
                     }
                     Err(e) => return Err(e.map_err_context(String::new)),
                 }
                 delim_count += 1;
             }
-            println!("{}", &output[..output.len() - 1]);
+            output.pop();
+            writeln!(stdout, "{}", output)?;
         }
     } else {
-        let mut eof: Vec<bool> = repeat(false).take(files.len()).collect();
+        let mut eof = vec![false; files.len()];
         loop {
-            let mut output = String::new();
+            output.clear();
             let mut eof_count = 0;
             for (i, file) in files.iter_mut().enumerate() {
                 if eof[i] {
                     eof_count += 1;
                 } else {
-                    let mut line = String::new();
-                    match read_line(file.as_mut(), &mut line) {
+                    match read_line(file.as_mut(), &mut output) {
                         Ok(0) => {
                             eof[i] = true;
                             eof_count += 1;
                         }
-                        Ok(_) => output.push_str(line.trim_end()),
+                        Ok(_) => {
+                            if output.ends_with('\n') {
+                                output.pop();
+                            }
+                        }
                         Err(e) => return Err(e.map_err_context(String::new)),
                     }
                 }
-                output.push_str(&delimiters[delim_count % delimiters.len()]);
+                output.push(delimiters[delim_count % delimiters.len()]);
                 delim_count += 1;
             }
             if files.len() == eof_count {
                 break;
             }
-            println!("{}", &output[..output.len() - 1]);
+            // Remove final delimiter
+            output.pop();
+            writeln!(stdout, "{}", output)?;
             delim_count = 0;
         }
     }
diff --git a/dev/src/uu_pr/pr.rs.html b/dev/src/uu_pr/pr.rs.html
index 31313cc54..43436db6e 100644
--- a/dev/src/uu_pr/pr.rs.html
+++ b/dev/src/uu_pr/pr.rs.html
@@ -1300,6 +1300,11 @@
 1299
 1300
 1301
+1302
+1303
+1304
+1305
+1306
 
#![crate_name = "uu_pr"]
 
 // This file is part of the uutils coreutils package.
@@ -1334,6 +1339,8 @@
 
 const NAME: &str = "pr";
 const VERSION: &str = env!("CARGO_PKG_VERSION");
+const ABOUT: &str =
+    "Write content of given file or standard input to standard output with pagination filter";
 const TAB: char = '\t';
 const LINES_PER_PAGE: usize = 66;
 const LINES_PER_PAGE_FOR_FORM_FEED: usize = 63;
@@ -1474,7 +1481,10 @@
 }
 
 pub fn uu_app<'a>() -> App<'a> {
-    App::new(uucore::util_name()).setting(AppSettings::InferLongArgs)
+    App::new(uucore::util_name())
+        .version(VERSION)
+        .about(ABOUT)
+        .setting(AppSettings::InferLongArgs)
 }
 
 #[uucore::main]
diff --git a/dev/src/uu_split/split.rs.html b/dev/src/uu_split/split.rs.html
index e7ed93f35..b70c37d51 100644
--- a/dev/src/uu_split/split.rs.html
+++ b/dev/src/uu_split/split.rs.html
@@ -585,6 +585,121 @@
 584
 585
 586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
+610
+611
+612
+613
+614
+615
+616
+617
+618
+619
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+653
+654
+655
+656
+657
+658
+659
+660
+661
+662
+663
+664
+665
+666
+667
+668
+669
+670
+671
+672
+673
+674
+675
+676
+677
+678
+679
+680
+681
+682
+683
+684
+685
+686
+687
+688
+689
+690
+691
+692
+693
+694
+695
+696
+697
+698
+699
+700
+701
 
//  * This file is part of the uutils coreutils package.
 //  *
 //  * (c) Akira Hayakawa <ruby.wktk@gmail.com>
@@ -600,16 +715,16 @@
 
 use crate::filenames::FilenameIterator;
 use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
-use std::convert::TryFrom;
 use std::env;
 use std::fmt;
-use std::fs::{metadata, remove_file, File};
-use std::io::{stdin, BufRead, BufReader, BufWriter, Read, Write};
+use std::fs::{metadata, File};
+use std::io::{stdin, BufReader, BufWriter, ErrorKind, Read, Write};
 use std::num::ParseIntError;
 use std::path::Path;
 use uucore::display::Quotable;
-use uucore::error::{FromIo, UResult, USimpleError, UUsageError};
+use uucore::error::{FromIo, UIoError, UResult, USimpleError, UUsageError};
 use uucore::parse_size::{parse_size, ParseSizeError};
+use uucore::uio_error;
 
 static OPT_BYTES: &str = "bytes";
 static OPT_LINE_BYTES: &str = "line-bytes";
@@ -919,102 +1034,235 @@ size is 1000, and default PREFIX is 'x'. With no INPUT, or when INPUT is
     }
 }
 
-trait Splitter {
-    // Consume as much as possible from `reader` so as to saturate `writer`.
-    // Equivalent to finishing one of the part files. Returns the number of
-    // bytes that have been moved.
-    fn consume(
-        &mut self,
-        reader: &mut BufReader<Box<dyn Read>>,
-        writer: &mut BufWriter<Box<dyn Write>>,
-    ) -> std::io::Result<u128>;
+/// Write a certain number of bytes to one file, then move on to another one.
+///
+/// This struct maintains an underlying writer representing the
+/// current chunk of the output. If a call to [`write`] would cause
+/// the underlying writer to write more than the allowed number of
+/// bytes, a new writer is created and the excess bytes are written to
+/// that one instead. As many new underlying writers are created as
+/// needed to write all the bytes in the input buffer.
+struct ByteChunkWriter<'a> {
+    /// Parameters for creating the underlying writer for each new chunk.
+    settings: &'a Settings,
+
+    /// The maximum number of bytes allowed for a single chunk of output.
+    chunk_size: usize,
+
+    /// Running total of number of chunks that have been completed.
+    num_chunks_written: usize,
+
+    /// Remaining capacity in number of bytes in the current chunk.
+    ///
+    /// This number starts at `chunk_size` and decreases as bytes are
+    /// written. Once it reaches zero, a writer for a new chunk is
+    /// initialized and this number gets reset to `chunk_size`.
+    num_bytes_remaining_in_current_chunk: usize,
+
+    /// The underlying writer for the current chunk.
+    ///
+    /// Once the number of bytes written to this writer exceeds
+    /// `chunk_size`, a new writer is initialized and assigned to this
+    /// field.
+    inner: BufWriter<Box<dyn Write>>,
+
+    /// Iterator that yields filenames for each chunk.
+    filename_iterator: FilenameIterator<'a>,
 }
 
-struct LineSplitter {
-    lines_per_split: usize,
-}
-
-impl LineSplitter {
-    fn new(chunk_size: usize) -> Self {
-        Self {
-            lines_per_split: chunk_size,
+impl<'a> ByteChunkWriter<'a> {
+    fn new(chunk_size: usize, settings: &'a Settings) -> Option<ByteChunkWriter<'a>> {
+        let mut filename_iterator = FilenameIterator::new(
+            &settings.prefix,
+            &settings.additional_suffix,
+            settings.suffix_length,
+            settings.numeric_suffix,
+        );
+        let filename = filename_iterator.next()?;
+        if settings.verbose {
+            println!("creating file {}", filename.quote());
         }
+        let inner = platform::instantiate_current_writer(&settings.filter, &filename);
+        Some(ByteChunkWriter {
+            settings,
+            chunk_size,
+            num_bytes_remaining_in_current_chunk: chunk_size,
+            num_chunks_written: 0,
+            inner,
+            filename_iterator,
+        })
     }
 }
 
-impl Splitter for LineSplitter {
-    fn consume(
-        &mut self,
-        reader: &mut BufReader<Box<dyn Read>>,
-        writer: &mut BufWriter<Box<dyn Write>>,
-    ) -> std::io::Result<u128> {
-        let mut bytes_consumed = 0u128;
-        let mut buffer = String::with_capacity(1024);
-        for _ in 0..self.lines_per_split {
-            let bytes_read = reader.read_line(&mut buffer)?;
-            // If we ever read 0 bytes then we know we've hit EOF.
-            if bytes_read == 0 {
-                return Ok(bytes_consumed);
+impl<'a> Write for ByteChunkWriter<'a> {
+    fn write(&mut self, mut buf: &[u8]) -> std::io::Result<usize> {
+        // If the length of `buf` exceeds the number of bytes remaining
+        // in the current chunk, we will need to write to multiple
+        // different underlying writers. In that case, each iteration of
+        // this loop writes to the underlying writer that corresponds to
+        // the current chunk number.
+        let mut carryover_bytes_written = 0;
+        loop {
+            if buf.is_empty() {
+                return Ok(carryover_bytes_written);
             }
 
-            writer.write_all(buffer.as_bytes())?;
-            // Empty out the String buffer since `read_line` appends instead of
-            // replaces.
-            buffer.clear();
-
-            bytes_consumed += bytes_read as u128;
-        }
-
-        Ok(bytes_consumed)
-    }
-}
-
-struct ByteSplitter {
-    bytes_per_split: u128,
-}
-
-impl ByteSplitter {
-    fn new(chunk_size: usize) -> Self {
-        Self {
-            bytes_per_split: u128::try_from(chunk_size).unwrap(),
-        }
-    }
-}
-
-impl Splitter for ByteSplitter {
-    fn consume(
-        &mut self,
-        reader: &mut BufReader<Box<dyn Read>>,
-        writer: &mut BufWriter<Box<dyn Write>>,
-    ) -> std::io::Result<u128> {
-        // We buffer reads and writes. We proceed until `bytes_consumed` is
-        // equal to `self.bytes_per_split` or we reach EOF.
-        let mut bytes_consumed = 0u128;
-        const BUFFER_SIZE: usize = 1024;
-        let mut buffer = [0u8; BUFFER_SIZE];
-        while bytes_consumed < self.bytes_per_split {
-            // Don't overshoot `self.bytes_per_split`! Note: Using std::cmp::min
-            // doesn't really work since we have to get types to match which
-            // can't be done in a way that keeps all conversions safe.
-            let bytes_desired = if (BUFFER_SIZE as u128) <= self.bytes_per_split - bytes_consumed {
-                BUFFER_SIZE
+            // If the capacity of this chunk is greater than the number of
+            // bytes in `buf`, then write all the bytes in `buf`. Otherwise,
+            // write enough bytes to fill the current chunk, then increment
+            // the chunk number and repeat.
+            let n = buf.len();
+            if n < self.num_bytes_remaining_in_current_chunk {
+                let num_bytes_written = self.inner.write(buf)?;
+                self.num_bytes_remaining_in_current_chunk -= num_bytes_written;
+                return Ok(carryover_bytes_written + num_bytes_written);
             } else {
-                // This is a safe conversion since the difference must be less
-                // than BUFFER_SIZE in this branch.
-                (self.bytes_per_split - bytes_consumed) as usize
-            };
-            let bytes_read = reader.read(&mut buffer[0..bytes_desired])?;
-            // If we ever read 0 bytes then we know we've hit EOF.
-            if bytes_read == 0 {
-                return Ok(bytes_consumed);
+                // Write enough bytes to fill the current chunk.
+                let i = self.num_bytes_remaining_in_current_chunk;
+                let num_bytes_written = self.inner.write(&buf[..i])?;
+
+                // It's possible that the underlying writer did not
+                // write all the bytes.
+                if num_bytes_written < i {
+                    self.num_bytes_remaining_in_current_chunk -= num_bytes_written;
+                    return Ok(carryover_bytes_written + num_bytes_written);
+                } else {
+                    // Move the window to look at only the remaining bytes.
+                    buf = &buf[i..];
+
+                    // Increment the chunk number, reset the number of
+                    // bytes remaining, and instantiate the new
+                    // underlying writer.
+                    self.num_chunks_written += 1;
+                    self.num_bytes_remaining_in_current_chunk = self.chunk_size;
+
+                    // Remember for the next iteration that we wrote these bytes.
+                    carryover_bytes_written += num_bytes_written;
+
+                    // Only create the writer for the next chunk if
+                    // there are any remaining bytes to write. This
+                    // check prevents us from creating a new empty
+                    // file.
+                    if !buf.is_empty() {
+                        let filename = self.filename_iterator.next().ok_or_else(|| {
+                            std::io::Error::new(ErrorKind::Other, "output file suffixes exhausted")
+                        })?;
+                        if self.settings.verbose {
+                            println!("creating file {}", filename.quote());
+                        }
+                        self.inner =
+                            platform::instantiate_current_writer(&self.settings.filter, &filename);
+                    }
+                }
+            }
+        }
+    }
+    fn flush(&mut self) -> std::io::Result<()> {
+        self.inner.flush()
+    }
+}
+
+/// Write a certain number of lines to one file, then move on to another one.
+///
+/// This struct maintains an underlying writer representing the
+/// current chunk of the output. If a call to [`write`] would cause
+/// the underlying writer to write more than the allowed number of
+/// lines, a new writer is created and the excess lines are written to
+/// that one instead. As many new underlying writers are created as
+/// needed to write all the lines in the input buffer.
+struct LineChunkWriter<'a> {
+    /// Parameters for creating the underlying writer for each new chunk.
+    settings: &'a Settings,
+
+    /// The maximum number of lines allowed for a single chunk of output.
+    chunk_size: usize,
+
+    /// Running total of number of chunks that have been completed.
+    num_chunks_written: usize,
+
+    /// Remaining capacity in number of lines in the current chunk.
+    ///
+    /// This number starts at `chunk_size` and decreases as lines are
+    /// written. Once it reaches zero, a writer for a new chunk is
+    /// initialized and this number gets reset to `chunk_size`.
+    num_lines_remaining_in_current_chunk: usize,
+
+    /// The underlying writer for the current chunk.
+    ///
+    /// Once the number of lines written to this writer exceeds
+    /// `chunk_size`, a new writer is initialized and assigned to this
+    /// field.
+    inner: BufWriter<Box<dyn Write>>,
+
+    /// Iterator that yields filenames for each chunk.
+    filename_iterator: FilenameIterator<'a>,
+}
+
+impl<'a> LineChunkWriter<'a> {
+    fn new(chunk_size: usize, settings: &'a Settings) -> Option<LineChunkWriter<'a>> {
+        let mut filename_iterator = FilenameIterator::new(
+            &settings.prefix,
+            &settings.additional_suffix,
+            settings.suffix_length,
+            settings.numeric_suffix,
+        );
+        let filename = filename_iterator.next()?;
+        if settings.verbose {
+            println!("creating file {}", filename.quote());
+        }
+        let inner = platform::instantiate_current_writer(&settings.filter, &filename);
+        Some(LineChunkWriter {
+            settings,
+            chunk_size,
+            num_lines_remaining_in_current_chunk: chunk_size,
+            num_chunks_written: 0,
+            inner,
+            filename_iterator,
+        })
+    }
+}
+
+impl<'a> Write for LineChunkWriter<'a> {
+    fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
+        // If the number of lines in `buf` exceeds the number of lines
+        // remaining in the current chunk, we will need to write to
+        // multiple different underlying writers. In that case, each
+        // iteration of this loop writes to the underlying writer that
+        // corresponds to the current chunk number.
+        let mut prev = 0;
+        let mut total_bytes_written = 0;
+        for i in memchr::memchr_iter(b'\n', buf) {
+            // If we have exceeded the number of lines to write in the
+            // current chunk, then start a new chunk and its
+            // corresponding writer.
+            if self.num_lines_remaining_in_current_chunk == 0 {
+                self.num_chunks_written += 1;
+                let filename = self.filename_iterator.next().ok_or_else(|| {
+                    std::io::Error::new(ErrorKind::Other, "output file suffixes exhausted")
+                })?;
+                if self.settings.verbose {
+                    println!("creating file {}", filename.quote());
+                }
+                self.inner = platform::instantiate_current_writer(&self.settings.filter, &filename);
+                self.num_lines_remaining_in_current_chunk = self.chunk_size;
             }
 
-            writer.write_all(&buffer[0..bytes_read])?;
-
-            bytes_consumed += bytes_read as u128;
+            // Write the line, starting from *after* the previous
+            // newline character and ending *after* the current
+            // newline character.
+            let n = self.inner.write(&buf[prev..i + 1])?;
+            total_bytes_written += n;
+            prev = i + 1;
+            self.num_lines_remaining_in_current_chunk -= 1;
         }
 
-        Ok(bytes_consumed)
+        let n = self.inner.write(&buf[prev..buf.len()])?;
+        total_bytes_written += n;
+        Ok(total_bytes_written)
+    }
+
+    fn flush(&mut self) -> std::io::Result<()> {
+        self.inner.flush()
     }
 }
 
@@ -1109,67 +1357,49 @@ size is 1000, and default PREFIX is 'x'. With no INPUT, or when INPUT is
         Box::new(r) as Box<dyn Read>
     });
 
-    if let Strategy::Number(num_chunks) = settings.strategy {
-        return split_into_n_chunks_by_byte(settings, &mut reader, num_chunks);
-    }
-
-    let mut splitter: Box<dyn Splitter> = match settings.strategy {
-        Strategy::Lines(chunk_size) => Box::new(LineSplitter::new(chunk_size)),
-        Strategy::Bytes(chunk_size) | Strategy::LineBytes(chunk_size) => {
-            Box::new(ByteSplitter::new(chunk_size))
+    match settings.strategy {
+        Strategy::Number(num_chunks) => {
+            split_into_n_chunks_by_byte(settings, &mut reader, num_chunks)
         }
-        _ => unreachable!(),
-    };
-
-    // This object is responsible for creating the filename for each chunk.
-    let mut filename_iterator = FilenameIterator::new(
-        &settings.prefix,
-        &settings.additional_suffix,
-        settings.suffix_length,
-        settings.numeric_suffix,
-    );
-    loop {
-        // Get a new part file set up, and construct `writer` for it.
-        let filename = filename_iterator
-            .next()
-            .ok_or_else(|| USimpleError::new(1, "output file suffixes exhausted"))?;
-        let mut writer = platform::instantiate_current_writer(&settings.filter, filename.as_str());
-
-        let bytes_consumed = splitter
-            .consume(&mut reader, &mut writer)
-            .map_err_context(|| "input/output error".to_string())?;
-        writer
-            .flush()
-            .map_err_context(|| "error flushing to output file".to_string())?;
-
-        // If we didn't write anything we should clean up the empty file, and
-        // break from the loop.
-        if bytes_consumed == 0 {
-            // The output file is only ever created if --filter isn't used.
-            // Complicated, I know...
-            if settings.filter.is_none() {
-                remove_file(filename)
-                    .map_err_context(|| "error removing empty file".to_string())?;
+        Strategy::Lines(chunk_size) => {
+            let mut writer = LineChunkWriter::new(chunk_size, settings)
+                .ok_or_else(|| USimpleError::new(1, "output file suffixes exhausted"))?;
+            match std::io::copy(&mut reader, &mut writer) {
+                Ok(_) => Ok(()),
+                Err(e) => match e.kind() {
+                    // TODO Since the writer object controls the creation of
+                    // new files, we need to rely on the `std::io::Result`
+                    // returned by its `write()` method to communicate any
+                    // errors to this calling scope. If a new file cannot be
+                    // created because we have exceeded the number of
+                    // allowable filenames, we use `ErrorKind::Other` to
+                    // indicate that. A special error message needs to be
+                    // printed in that case.
+                    ErrorKind::Other => Err(USimpleError::new(1, "output file suffixes exhausted")),
+                    _ => Err(uio_error!(e, "input/output error")),
+                },
             }
-            break;
         }
-
-        // TODO It is silly to have the "creating file" message here
-        // after the file has been already created. However, because
-        // of the way the main loop has been written, an extra file
-        // gets created and then deleted in the last iteration of the
-        // loop. So we need to make sure we are not in that case when
-        // printing this message.
-        //
-        // This is only here temporarily while we make some
-        // improvements to the architecture of the main loop in this
-        // function. In the future, it will move to a more appropriate
-        // place---at the point where the file is actually created.
-        if settings.verbose {
-            println!("creating file {}", filename.quote());
+        Strategy::Bytes(chunk_size) | Strategy::LineBytes(chunk_size) => {
+            let mut writer = ByteChunkWriter::new(chunk_size, settings)
+                .ok_or_else(|| USimpleError::new(1, "output file suffixes exhausted"))?;
+            match std::io::copy(&mut reader, &mut writer) {
+                Ok(_) => Ok(()),
+                Err(e) => match e.kind() {
+                    // TODO Since the writer object controls the creation of
+                    // new files, we need to rely on the `std::io::Result`
+                    // returned by its `write()` method to communicate any
+                    // errors to this calling scope. If a new file cannot be
+                    // created because we have exceeded the number of
+                    // allowable filenames, we use `ErrorKind::Other` to
+                    // indicate that. A special error message needs to be
+                    // printed in that case.
+                    ErrorKind::Other => Err(USimpleError::new(1, "output file suffixes exhausted")),
+                    _ => Err(uio_error!(e, "input/output error")),
+                },
+            }
         }
     }
-    Ok(())
 }
 
diff --git a/dev/src/uu_tail/tail.rs.html b/dev/src/uu_tail/tail.rs.html index 7651d6607..5d48e1d2a 100644 --- a/dev/src/uu_tail/tail.rs.html +++ b/dev/src/uu_tail/tail.rs.html @@ -658,7 +658,6 @@ 657 658 659 -660
//  * This file is part of the uutils coreutils package.
 //  *
 //  * (c) Morten Olsen Lysgaard <morten@lysgaard.no>
@@ -677,11 +676,9 @@
 extern crate uucore;
 
 mod chunks;
-mod lines;
 mod parse;
 mod platform;
 use chunks::ReverseChunks;
-use lines::lines;
 
 use clap::{App, AppSettings, Arg};
 use std::collections::VecDeque;
@@ -694,6 +691,7 @@
 use std::time::Duration;
 use uucore::display::Quotable;
 use uucore::error::{FromIo, UResult, USimpleError};
+use uucore::lines::lines;
 use uucore::parse_size::{parse_size, ParseSizeError};
 use uucore::ringbuffer::RingBuffer;
 
diff --git a/dev/src/uu_touch/touch.rs.html b/dev/src/uu_touch/touch.rs.html
index d1c4ed0d2..01be15893 100644
--- a/dev/src/uu_touch/touch.rs.html
+++ b/dev/src/uu_touch/touch.rs.html
@@ -293,6 +293,16 @@
 292
 293
 294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
 
// This file is part of the uutils coreutils package.
 //
 // (c) Nick Platt <platt.nicholas@gmail.com>
@@ -378,8 +388,18 @@ Try 'touch --help' for more information."##,
     for filename in files {
         let path = Path::new(filename);
         if !path.exists() {
-            // no-dereference included here for compatibility
-            if matches.is_present(options::NO_CREATE) || matches.is_present(options::NO_DEREF) {
+            if matches.is_present(options::NO_CREATE) {
+                continue;
+            }
+
+            if matches.is_present(options::NO_DEREF) {
+                show!(USimpleError::new(
+                    1,
+                    format!(
+                        "setting times of {}: No such file or directory",
+                        filename.quote()
+                    )
+                ));
                 continue;
             }
 
diff --git a/dev/src/uu_truncate/truncate.rs.html b/dev/src/uu_truncate/truncate.rs.html
index fdadc2f92..a236f0f23 100644
--- a/dev/src/uu_truncate/truncate.rs.html
+++ b/dev/src/uu_truncate/truncate.rs.html
@@ -420,6 +420,47 @@
 419
 420
 421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+461
+462
 
//  * This file is part of the uutils coreutils package.
 //  *
 //  * (c) Alex Lyon <arcterus@mail.com>
@@ -432,6 +473,8 @@
 use std::convert::TryFrom;
 use std::fs::{metadata, OpenOptions};
 use std::io::ErrorKind;
+#[cfg(unix)]
+use std::os::unix::fs::FileTypeExt;
 use std::path::Path;
 use uucore::display::Quotable;
 use uucore::error::{FromIo, UResult, USimpleError, UUsageError};
@@ -634,8 +677,10 @@
 ///
 /// # Errors
 ///
-/// If the any file could not be opened, or there was a problem setting
+/// If any file could not be opened, or there was a problem setting
 /// the size of at least one file.
+///
+/// If at least one file is a named pipe (also known as a fifo).
 fn truncate_reference_and_size(
     rfilename: &str,
     size_string: &str,
@@ -668,6 +713,17 @@
     let fsize = metadata.len() as usize;
     let tsize = mode.to_size(fsize);
     for filename in filenames {
+        #[cfg(unix)]
+        if std::fs::metadata(filename)?.file_type().is_fifo() {
+            return Err(USimpleError::new(
+                1,
+                format!(
+                    "cannot open {} for writing: No such device or address",
+                    filename.quote()
+                ),
+            ));
+        }
+
         file_truncate(filename, create, tsize)
             .map_err_context(|| format!("cannot open {} for writing", filename.quote()))?;
     }
@@ -683,8 +739,10 @@
 ///
 /// # Errors
 ///
-/// If the any file could not be opened, or there was a problem setting
+/// If any file could not be opened, or there was a problem setting
 /// the size of at least one file.
+///
+/// If at least one file is a named pipe (also known as a fifo).
 fn truncate_reference_file_only(
     rfilename: &str,
     filenames: &[String],
@@ -702,6 +760,16 @@
     })?;
     let tsize = metadata.len() as usize;
     for filename in filenames {
+        #[cfg(unix)]
+        if std::fs::metadata(filename)?.file_type().is_fifo() {
+            return Err(USimpleError::new(
+                1,
+                format!(
+                    "cannot open {} for writing: No such device or address",
+                    filename.quote()
+                ),
+            ));
+        }
         file_truncate(filename, create, tsize)
             .map_err_context(|| format!("cannot open {} for writing", filename.quote()))?;
     }
@@ -721,8 +789,10 @@
 ///
 /// # Errors
 ///
-/// If the any file could not be opened, or there was a problem setting
+/// If any file could not be opened, or there was a problem setting
 /// the size of at least one file.
+///
+/// If at least one file is a named pipe (also known as a fifo).
 fn truncate_size_only(size_string: &str, filenames: &[String], create: bool) -> UResult<()> {
     let mode = parse_mode_and_size(size_string)
         .map_err(|e| USimpleError::new(1, format!("Invalid number: {}", e)))?;
@@ -731,7 +801,19 @@
     }
     for filename in filenames {
         let fsize = match metadata(filename) {
-            Ok(m) => m.len(),
+            Ok(m) => {
+                #[cfg(unix)]
+                if m.file_type().is_fifo() {
+                    return Err(USimpleError::new(
+                        1,
+                        format!(
+                            "cannot open {} for writing: No such device or address",
+                            filename.quote()
+                        ),
+                    ));
+                }
+                m.len()
+            }
             Err(_) => 0,
         };
         let tsize = mode.to_size(fsize as usize);
diff --git a/dev/src/uu_wc/wc.rs.html b/dev/src/uu_wc/wc.rs.html
index 0848605e1..64885d152 100644
--- a/dev/src/uu_wc/wc.rs.html
+++ b/dev/src/uu_wc/wc.rs.html
@@ -527,6 +527,87 @@
 526
 527
 528
+529
+530
+531
+532
+533
+534
+535
+536
+537
+538
+539
+540
+541
+542
+543
+544
+545
+546
+547
+548
+549
+550
+551
+552
+553
+554
+555
+556
+557
+558
+559
+560
+561
+562
+563
+564
+565
+566
+567
+568
+569
+570
+571
+572
+573
+574
+575
+576
+577
+578
+579
+580
+581
+582
+583
+584
+585
+586
+587
+588
+589
+590
+591
+592
+593
+594
+595
+596
+597
+598
+599
+600
+601
+602
+603
+604
+605
+606
+607
+608
+609
 
//  * This file is part of the uutils coreutils package.
 //  *
 //  * (c) Boden Garman <bpgarman@gmail.com>
@@ -549,12 +630,15 @@
 use clap::{crate_version, App, AppSettings, Arg, ArgMatches};
 
 use std::cmp::max;
+use std::error::Error;
+use std::ffi::OsStr;
+use std::fmt::Display;
 use std::fs::{self, File};
-use std::io::{self, Write};
+use std::io::{self, Read, Write};
 use std::path::{Path, PathBuf};
 
 use uucore::display::{Quotable, Quoted};
-use uucore::error::{UResult, USimpleError};
+use uucore::error::{UError, UResult, USimpleError};
 
 /// The minimum character width for formatting counts when reading from stdin.
 const MINIMUM_WIDTH: usize = 7;
@@ -612,12 +696,14 @@ more than one FILE is specified.";
 pub mod options {
     pub static BYTES: &str = "bytes";
     pub static CHAR: &str = "chars";
+    pub static FILES0_FROM: &str = "files0-from";
     pub static LINES: &str = "lines";
     pub static MAX_LINE_LENGTH: &str = "max-line-length";
     pub static WORDS: &str = "words";
 }
 
 static ARG_FILES: &str = "files";
+static STDIN_REPR: &str = "-";
 
 fn usage() -> String {
     format!(
@@ -644,12 +730,22 @@ more than one FILE is specified.";
     Stdin(StdinKind),
 }
 
+impl From<&OsStr> for Input {
+    fn from(input: &OsStr) -> Self {
+        if input == STDIN_REPR {
+            Self::Stdin(StdinKind::Explicit)
+        } else {
+            Self::Path(input.into())
+        }
+    }
+}
+
 impl Input {
     /// Converts input to title that appears in stats.
     fn to_title(&self) -> Option<&Path> {
         match self {
             Input::Path(path) => Some(path),
-            Input::Stdin(StdinKind::Explicit) => Some("-".as_ref()),
+            Input::Stdin(StdinKind::Explicit) => Some(STDIN_REPR.as_ref()),
             Input::Stdin(StdinKind::Implicit) => None,
         }
     }
@@ -662,29 +758,43 @@ more than one FILE is specified.";
     }
 }
 
+#[derive(Debug)]
+enum WcError {
+    FilesDisabled(String),
+    StdinReprNotAllowed(String),
+}
+
+impl UError for WcError {
+    fn code(&self) -> i32 {
+        match self {
+            WcError::FilesDisabled(_) | WcError::StdinReprNotAllowed(_) => 1,
+        }
+    }
+
+    fn usage(&self) -> bool {
+        matches!(self, WcError::FilesDisabled(_))
+    }
+}
+
+impl Error for WcError {}
+
+impl Display for WcError {
+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+        match self {
+            WcError::FilesDisabled(message) | WcError::StdinReprNotAllowed(message) => {
+                write!(f, "{}", message)
+            }
+        }
+    }
+}
+
 #[uucore::main]
 pub fn uumain(args: impl uucore::Args) -> UResult<()> {
     let usage = usage();
 
     let matches = uu_app().override_usage(&usage[..]).get_matches_from(args);
 
-    let mut inputs: Vec<Input> = matches
-        .values_of_os(ARG_FILES)
-        .map(|v| {
-            v.map(|i| {
-                if i == "-" {
-                    Input::Stdin(StdinKind::Explicit)
-                } else {
-                    Input::Path(i.into())
-                }
-            })
-            .collect()
-        })
-        .unwrap_or_default();
-
-    if inputs.is_empty() {
-        inputs.push(Input::Stdin(StdinKind::Implicit));
-    }
+    let inputs = inputs(&matches)?;
 
     let settings = Settings::new(&matches);
 
@@ -708,6 +818,17 @@ more than one FILE is specified.";
                 .long(options::CHAR)
                 .help("print the character counts"),
         )
+        .arg(
+            Arg::new(options::FILES0_FROM)
+                .long(options::FILES0_FROM)
+                .takes_value(true)
+                .value_name("F")
+                .help(
+                    "read input from the files specified by
+    NUL-terminated names in file F;
+    If F is - then read names from standard input",
+                ),
+        )
         .arg(
             Arg::new(options::LINES)
                 .short('l')
@@ -734,6 +855,47 @@ more than one FILE is specified.";
         )
 }
 
+fn inputs(matches: &ArgMatches) -> UResult<Vec<Input>> {
+    match matches.values_of_os(ARG_FILES) {
+        Some(os_values) => {
+            if matches.is_present(options::FILES0_FROM) {
+                return Err(WcError::FilesDisabled(
+                    "file operands cannot be combined with --files0-from".into(),
+                )
+                .into());
+            }
+
+            Ok(os_values.map(Input::from).collect())
+        }
+        None => match matches.value_of(options::FILES0_FROM) {
+            Some(files_0_from) => create_paths_from_files0(files_0_from),
+            None => Ok(vec![Input::Stdin(StdinKind::Implicit)]),
+        },
+    }
+}
+
+fn create_paths_from_files0(files_0_from: &str) -> UResult<Vec<Input>> {
+    let mut paths = String::new();
+    let read_from_stdin = files_0_from == STDIN_REPR;
+
+    if read_from_stdin {
+        io::stdin().lock().read_to_string(&mut paths)?;
+    } else {
+        File::open(files_0_from)?.read_to_string(&mut paths)?;
+    }
+
+    let paths: Vec<&str> = paths.split_terminator('\0').collect();
+
+    if read_from_stdin && paths.contains(&STDIN_REPR) {
+        return Err(WcError::StdinReprNotAllowed(
+            "when reading file names from stdin, no file name of '-' allowed".into(),
+        )
+        .into());
+    }
+
+    Ok(paths.iter().map(OsStr::new).map(Input::from).collect())
+}
+
 fn word_count_from_reader<T: WordCountable>(
     mut reader: T,
     settings: &Settings,
diff --git a/dev/src/uucore/features.rs.html b/dev/src/uucore/features.rs.html
index a163e1c5a..d9084b2b3 100644
--- a/dev/src/uucore/features.rs.html
+++ b/dev/src/uucore/features.rs.html
@@ -42,6 +42,8 @@
 41
 42
 43
+44
+45
 
// features ~ feature-gated modules (core/bundler file)
 
 #[cfg(feature = "encoding")]
@@ -50,6 +52,8 @@
 pub mod fs;
 #[cfg(feature = "fsext")]
 pub mod fsext;
+#[cfg(feature = "lines")]
+pub mod lines;
 #[cfg(feature = "memo")]
 pub mod memo;
 #[cfg(feature = "ringbuffer")]
diff --git a/dev/src/uucore/features/fsext.rs.html b/dev/src/uucore/features/fsext.rs.html
index e6bfe0af1..abe3e1ead 100644
--- a/dev/src/uucore/features/fsext.rs.html
+++ b/dev/src/uucore/features/fsext.rs.html
@@ -1508,7 +1508,7 @@
             // Total number of file nodes (inodes) on the file system.
             files: 0, // Not available on windows
             // Total number of free file nodes (inodes).
-            ffree: 4096, // Meaningless on Windows
+            ffree: 0, // Meaningless on Windows
         }
     }
 }
diff --git a/dev/src/uu_tail/lines.rs.html b/dev/src/uucore/features/lines.rs.html
similarity index 77%
rename from dev/src/uu_tail/lines.rs.html
rename to dev/src/uucore/features/lines.rs.html
index 7d12ec24e..56638af65 100644
--- a/dev/src/uu_tail/lines.rs.html
+++ b/dev/src/uucore/features/lines.rs.html
@@ -1,5 +1,5 @@
-lines.rs - source
-    
  1
+lines.rs - source
+    
  1
   2
   3
   4
@@ -110,19 +110,23 @@
 109
 110
 111
+112
+113
 
//  * This file is part of the uutils coreutils package.
 //  *
 //  * For the full copyright and license information, please view the LICENSE
 //  * file that was distributed with this source code.
+// spell-checker:ignore (vars)
 //! Iterate over lines, including the line ending character(s).
 //!
 //! This module provides the [`lines`] function, similar to the
 //! [`BufRead::lines`] method. While the [`BufRead::lines`] method
 //! yields [`String`] instances that do not include the line ending
-//! characters (`"\n"` or `"\r\n"`), our function yields [`String`]
-//! instances that include the line ending characters. This is useful
-//! if the input data does not end with a newline character and you
-//! want to preserve the exact form of the input data.
+//! characters (`"\n"` or `"\r\n"`), our functions yield
+//! [`Vec`]<['u8']> instances that include the line ending
+//! characters. This is useful if the input data does not end with a
+//! newline character and you want to preserve the exact form of the
+//! input data.
 use std::io::BufRead;
 
 /// Returns an iterator over the lines, including line ending characters.
@@ -163,7 +167,7 @@
 /// assert_eq!(it.next(), Some(Vec::from("z")));
 /// assert_eq!(it.next(), None);
 /// ```
-pub(crate) fn lines<B>(reader: B, sep: u8) -> Lines<B>
+pub fn lines<B>(reader: B, sep: u8) -> Lines<B>
 where
     B: BufRead,
 {
@@ -174,7 +178,7 @@
 ///
 /// This struct is generally created by calling [`lines`] on a `BufRead`.
 /// Please see the documentation of [`lines`] for more details.
-pub(crate) struct Lines<B> {
+pub struct Lines<B> {
     buf: B,
     sep: u8,
 }
@@ -222,5 +226,5 @@
     }
 }
 
-
+
\ No newline at end of file diff --git a/dev/src/uucore/lib.rs.html b/dev/src/uucore/lib.rs.html index b56ef81c5..4c27edef6 100644 --- a/dev/src/uucore/lib.rs.html +++ b/dev/src/uucore/lib.rs.html @@ -316,6 +316,8 @@ 315 316 317 +318 +319
// library ~ (core/bundler file)
 
 // Copyright (C) ~ Alex Lyon <arcterus@mail.com>
@@ -356,6 +358,8 @@
 pub use crate::features::fs;
 #[cfg(feature = "fsext")]
 pub use crate::features::fsext;
+#[cfg(feature = "lines")]
+pub use crate::features::lines;
 #[cfg(feature = "memo")]
 pub use crate::features::memo;
 #[cfg(feature = "ringbuffer")]
diff --git a/dev/uu_chgrp/entries/index.html b/dev/uu_chgrp/entries/index.html
index a474ab29a..3d929a79d 100644
--- a/dev/uu_chgrp/entries/index.html
+++ b/dev/uu_chgrp/entries/index.html
@@ -1,5 +1,5 @@
 uu_chgrp::entries - Rust
-    

Module uu_chgrp::entries[][src]

Expand description

Get password/group file entry

+

Module uu_chgrp::entries[][src]

Expand description

Get password/group file entry

Examples:

use uucore::entries::{self, Locate};
 
diff --git a/dev/uu_chgrp/entries/struct.Group.html b/dev/uu_chgrp/entries/struct.Group.html
index 93e311b00..360c36367 100644
--- a/dev/uu_chgrp/entries/struct.Group.html
+++ b/dev/uu_chgrp/entries/struct.Group.html
@@ -7,7 +7,7 @@
 

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/dev/uu_chown/entries/index.html b/dev/uu_chown/entries/index.html index e889eff7f..805124e94 100644 --- a/dev/uu_chown/entries/index.html +++ b/dev/uu_chown/entries/index.html @@ -1,5 +1,5 @@ uu_chown::entries - Rust -

Module uu_chown::entries[][src]

Expand description

Get password/group file entry

+

Module uu_chown::entries[][src]

Expand description

Get password/group file entry

Examples:

use uucore::entries::{self, Locate};
 
diff --git a/dev/uu_chown/entries/struct.Group.html b/dev/uu_chown/entries/struct.Group.html
index 9411ec1e9..a9f161df7 100644
--- a/dev/uu_chown/entries/struct.Group.html
+++ b/dev/uu_chown/entries/struct.Group.html
@@ -7,7 +7,7 @@
 

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/dev/uu_chown/struct.Group.html b/dev/uu_chown/struct.Group.html index b396fe4d5..899be48d1 100644 --- a/dev/uu_chown/struct.Group.html +++ b/dev/uu_chown/struct.Group.html @@ -7,7 +7,7 @@

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/dev/uu_dd/fn.uu_app.html b/dev/uu_dd/fn.uu_app.html index 66e78bf5e..40fcb0708 100644 --- a/dev/uu_dd/fn.uu_app.html +++ b/dev/uu_dd/fn.uu_app.html @@ -1,3 +1,3 @@ uu_app in uu_dd - Rust -

Function uu_dd::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
+

Function uu_dd::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
\ No newline at end of file diff --git a/dev/uu_dd/fn.uumain.html b/dev/uu_dd/fn.uumain.html index e0b372622..baf20c557 100644 --- a/dev/uu_dd/fn.uumain.html +++ b/dev/uu_dd/fn.uumain.html @@ -1,3 +1,3 @@ uumain in uu_dd - Rust -

Function uu_dd::uumain[][src]

pub fn uumain(args: impl Args) -> i32
+

Function uu_dd::uumain[][src]

pub fn uumain(args: impl Args) -> i32
\ No newline at end of file diff --git a/dev/uu_dd/index.html b/dev/uu_dd/index.html index cb38b909e..f09ac7510 100644 --- a/dev/uu_dd/index.html +++ b/dev/uu_dd/index.html @@ -1,4 +1,4 @@ uu_dd - Rust -

Crate uu_dd[][src]

Functions

+

Crate uu_dd[][src]

Functions

\ No newline at end of file diff --git a/dev/uu_df/fn.uu_app.html b/dev/uu_df/fn.uu_app.html index 1dbc73287..554de766b 100644 --- a/dev/uu_df/fn.uu_app.html +++ b/dev/uu_df/fn.uu_app.html @@ -1,3 +1,3 @@ uu_app in uu_df - Rust -

Function uu_df::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
+

Function uu_df::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
\ No newline at end of file diff --git a/dev/uu_df/fn.uumain.html b/dev/uu_df/fn.uumain.html index 91c60f303..eea1f6e54 100644 --- a/dev/uu_df/fn.uumain.html +++ b/dev/uu_df/fn.uumain.html @@ -1,3 +1,3 @@ uumain in uu_df - Rust -

Function uu_df::uumain[][src]

pub fn uumain(args: impl Args) -> i32
+

Function uu_df::uumain[][src]

pub fn uumain(args: impl Args) -> i32
\ No newline at end of file diff --git a/dev/uu_df/index.html b/dev/uu_df/index.html index 77c4166e3..ff0a058e4 100644 --- a/dev/uu_df/index.html +++ b/dev/uu_df/index.html @@ -1,4 +1,4 @@ uu_df - Rust -

Crate uu_df[][src]

Functions

+

Crate uu_df[][src]

Functions

\ No newline at end of file diff --git a/dev/uu_head/fn.uu_app.html b/dev/uu_head/fn.uu_app.html index 3615580a9..3b37d88e1 100644 --- a/dev/uu_head/fn.uu_app.html +++ b/dev/uu_head/fn.uu_app.html @@ -1,3 +1,3 @@ uu_app in uu_head - Rust -

Function uu_head::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
+

Function uu_head::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
\ No newline at end of file diff --git a/dev/uu_head/fn.uumain.html b/dev/uu_head/fn.uumain.html index ca5144f8f..9ecafdede 100644 --- a/dev/uu_head/fn.uumain.html +++ b/dev/uu_head/fn.uumain.html @@ -1,3 +1,3 @@ uumain in uu_head - Rust -

Function uu_head::uumain[][src]

pub fn uumain(args: impl Args) -> i32
+

Function uu_head::uumain[][src]

pub fn uumain(args: impl Args) -> i32
\ No newline at end of file diff --git a/dev/uu_head/index.html b/dev/uu_head/index.html index e569fa273..2dc3d3a85 100644 --- a/dev/uu_head/index.html +++ b/dev/uu_head/index.html @@ -1,4 +1,4 @@ uu_head - Rust -

Crate uu_head[][src]

Functions

+

Crate uu_head[][src]

Functions

\ No newline at end of file diff --git a/dev/uu_ls/index.html b/dev/uu_ls/index.html index c65cf6087..8b4cfe69c 100644 --- a/dev/uu_ls/index.html +++ b/dev/uu_ls/index.html @@ -1,5 +1,5 @@ uu_ls - Rust -

Crate uu_ls[][src]

Modules

+

Crate uu_ls[][src]

Modules

Functions

\ No newline at end of file diff --git a/dev/uu_paste/fn.uu_app.html b/dev/uu_paste/fn.uu_app.html index 474df5c51..af0fe239c 100644 --- a/dev/uu_paste/fn.uu_app.html +++ b/dev/uu_paste/fn.uu_app.html @@ -1,3 +1,3 @@ uu_app in uu_paste - Rust -

Function uu_paste::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
+

Function uu_paste::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
\ No newline at end of file diff --git a/dev/uu_paste/fn.uumain.html b/dev/uu_paste/fn.uumain.html index 3bb9bb5d3..6e2d694ee 100644 --- a/dev/uu_paste/fn.uumain.html +++ b/dev/uu_paste/fn.uumain.html @@ -1,3 +1,3 @@ uumain in uu_paste - Rust -

Function uu_paste::uumain[][src]

pub fn uumain(args: impl Args) -> i32
+

Function uu_paste::uumain[][src]

pub fn uumain(args: impl Args) -> i32
\ No newline at end of file diff --git a/dev/uu_paste/index.html b/dev/uu_paste/index.html index 7a3a0fe2c..5407a5808 100644 --- a/dev/uu_paste/index.html +++ b/dev/uu_paste/index.html @@ -1,4 +1,4 @@ uu_paste - Rust -

Crate uu_paste[][src]

Functions

+

Crate uu_paste[][src]

Functions

\ No newline at end of file diff --git a/dev/uu_pr/fn.uu_app.html b/dev/uu_pr/fn.uu_app.html index d419bbe6f..36a434085 100644 --- a/dev/uu_pr/fn.uu_app.html +++ b/dev/uu_pr/fn.uu_app.html @@ -1,3 +1,3 @@ uu_app in uu_pr - Rust -

Function uu_pr::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
+

Function uu_pr::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
\ No newline at end of file diff --git a/dev/uu_pr/fn.uumain.html b/dev/uu_pr/fn.uumain.html index 46f30962d..5d38179e1 100644 --- a/dev/uu_pr/fn.uumain.html +++ b/dev/uu_pr/fn.uumain.html @@ -1,3 +1,3 @@ uumain in uu_pr - Rust -

Function uu_pr::uumain[][src]

pub fn uumain(args: impl Args) -> i32
+

Function uu_pr::uumain[][src]

pub fn uumain(args: impl Args) -> i32
\ No newline at end of file diff --git a/dev/uu_pr/index.html b/dev/uu_pr/index.html index be7c7b262..464e8737d 100644 --- a/dev/uu_pr/index.html +++ b/dev/uu_pr/index.html @@ -1,4 +1,4 @@ uu_pr - Rust -

Crate uu_pr[][src]

Functions

+

Crate uu_pr[][src]

Functions

\ No newline at end of file diff --git a/dev/uu_split/index.html b/dev/uu_split/index.html index 346d0be5b..76f58e26f 100644 --- a/dev/uu_split/index.html +++ b/dev/uu_split/index.html @@ -1,4 +1,4 @@ uu_split - Rust -

Crate uu_split[][src]

Functions

+

Crate uu_split[][src]

Functions

\ No newline at end of file diff --git a/dev/uu_tail/fn.uu_app.html b/dev/uu_tail/fn.uu_app.html index a4e373956..2e5f62ec3 100644 --- a/dev/uu_tail/fn.uu_app.html +++ b/dev/uu_tail/fn.uu_app.html @@ -1,3 +1,3 @@ uu_app in uu_tail - Rust -

Function uu_tail::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
+

Function uu_tail::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
\ No newline at end of file diff --git a/dev/uu_tail/fn.uumain.html b/dev/uu_tail/fn.uumain.html index a7d06e07b..4629049c4 100644 --- a/dev/uu_tail/fn.uumain.html +++ b/dev/uu_tail/fn.uumain.html @@ -1,3 +1,3 @@ uumain in uu_tail - Rust -

Function uu_tail::uumain[][src]

pub fn uumain(args: impl Args) -> i32
+

Function uu_tail::uumain[][src]

pub fn uumain(args: impl Args) -> i32
\ No newline at end of file diff --git a/dev/uu_tail/index.html b/dev/uu_tail/index.html index 8ed3c5f95..a0d8202fd 100644 --- a/dev/uu_tail/index.html +++ b/dev/uu_tail/index.html @@ -1,5 +1,5 @@ uu_tail - Rust -

Crate uu_tail[][src]

Modules

+

Crate uu_tail[][src]

Modules

Functions

\ No newline at end of file diff --git a/dev/uu_tail/options/index.html b/dev/uu_tail/options/index.html index 8b964b2f9..0777620ea 100644 --- a/dev/uu_tail/options/index.html +++ b/dev/uu_tail/options/index.html @@ -1,5 +1,5 @@ uu_tail::options - Rust -

Module uu_tail::options[][src]

Modules

+

Module uu_tail::options[][src]

Modules

Statics

\ No newline at end of file diff --git a/dev/uu_tail/options/static.ARG_FILES.html b/dev/uu_tail/options/static.ARG_FILES.html index 53ee6392b..08ded2425 100644 --- a/dev/uu_tail/options/static.ARG_FILES.html +++ b/dev/uu_tail/options/static.ARG_FILES.html @@ -1,3 +1,3 @@ ARG_FILES in uu_tail::options - Rust -

Static uu_tail::options::ARG_FILES[][src]

pub static ARG_FILES: &str
+

Static uu_tail::options::ARG_FILES[][src]

pub static ARG_FILES: &str
\ No newline at end of file diff --git a/dev/uu_tail/options/static.BYTES.html b/dev/uu_tail/options/static.BYTES.html index 0e66a5d4c..0c9da792c 100644 --- a/dev/uu_tail/options/static.BYTES.html +++ b/dev/uu_tail/options/static.BYTES.html @@ -1,3 +1,3 @@ BYTES in uu_tail::options - Rust -

Static uu_tail::options::BYTES[][src]

pub static BYTES: &str
+

Static uu_tail::options::BYTES[][src]

pub static BYTES: &str
\ No newline at end of file diff --git a/dev/uu_tail/options/static.FOLLOW.html b/dev/uu_tail/options/static.FOLLOW.html index f78af66d9..761b9befe 100644 --- a/dev/uu_tail/options/static.FOLLOW.html +++ b/dev/uu_tail/options/static.FOLLOW.html @@ -1,3 +1,3 @@ FOLLOW in uu_tail::options - Rust -

Static uu_tail::options::FOLLOW[][src]

pub static FOLLOW: &str
+

Static uu_tail::options::FOLLOW[][src]

pub static FOLLOW: &str
\ No newline at end of file diff --git a/dev/uu_tail/options/static.LINES.html b/dev/uu_tail/options/static.LINES.html index 7a2ceabc7..94b058198 100644 --- a/dev/uu_tail/options/static.LINES.html +++ b/dev/uu_tail/options/static.LINES.html @@ -1,3 +1,3 @@ LINES in uu_tail::options - Rust -

Static uu_tail::options::LINES[][src]

pub static LINES: &str
+

Static uu_tail::options::LINES[][src]

pub static LINES: &str
\ No newline at end of file diff --git a/dev/uu_tail/options/static.PID.html b/dev/uu_tail/options/static.PID.html index 96bfd837d..32cd2800d 100644 --- a/dev/uu_tail/options/static.PID.html +++ b/dev/uu_tail/options/static.PID.html @@ -1,3 +1,3 @@ PID in uu_tail::options - Rust -

Static uu_tail::options::PID[][src]

pub static PID: &str
+

Static uu_tail::options::PID[][src]

pub static PID: &str
\ No newline at end of file diff --git a/dev/uu_tail/options/static.SLEEP_INT.html b/dev/uu_tail/options/static.SLEEP_INT.html index 7052ec903..a6e815fcc 100644 --- a/dev/uu_tail/options/static.SLEEP_INT.html +++ b/dev/uu_tail/options/static.SLEEP_INT.html @@ -1,3 +1,3 @@ SLEEP_INT in uu_tail::options - Rust -

Static uu_tail::options::SLEEP_INT[][src]

pub static SLEEP_INT: &str
+

Static uu_tail::options::SLEEP_INT[][src]

pub static SLEEP_INT: &str
\ No newline at end of file diff --git a/dev/uu_tail/options/static.ZERO_TERM.html b/dev/uu_tail/options/static.ZERO_TERM.html index 660deff4f..1a0fcd38b 100644 --- a/dev/uu_tail/options/static.ZERO_TERM.html +++ b/dev/uu_tail/options/static.ZERO_TERM.html @@ -1,3 +1,3 @@ ZERO_TERM in uu_tail::options - Rust -

Static uu_tail::options::ZERO_TERM[][src]

pub static ZERO_TERM: &str
+

Static uu_tail::options::ZERO_TERM[][src]

pub static ZERO_TERM: &str
\ No newline at end of file diff --git a/dev/uu_tail/options/verbosity/index.html b/dev/uu_tail/options/verbosity/index.html index 78ad2678b..f7f6d3665 100644 --- a/dev/uu_tail/options/verbosity/index.html +++ b/dev/uu_tail/options/verbosity/index.html @@ -1,4 +1,4 @@ uu_tail::options::verbosity - Rust -

Module uu_tail::options::verbosity[][src]

Statics

+

Module uu_tail::options::verbosity[][src]

Statics

\ No newline at end of file diff --git a/dev/uu_tail/options/verbosity/static.QUIET.html b/dev/uu_tail/options/verbosity/static.QUIET.html index 64a960144..689c3c066 100644 --- a/dev/uu_tail/options/verbosity/static.QUIET.html +++ b/dev/uu_tail/options/verbosity/static.QUIET.html @@ -1,3 +1,3 @@ QUIET in uu_tail::options::verbosity - Rust -

Static uu_tail::options::verbosity::QUIET[][src]

pub static QUIET: &str
+

Static uu_tail::options::verbosity::QUIET[][src]

pub static QUIET: &str
\ No newline at end of file diff --git a/dev/uu_tail/options/verbosity/static.VERBOSE.html b/dev/uu_tail/options/verbosity/static.VERBOSE.html index 713656686..19aee7a21 100644 --- a/dev/uu_tail/options/verbosity/static.VERBOSE.html +++ b/dev/uu_tail/options/verbosity/static.VERBOSE.html @@ -1,3 +1,3 @@ VERBOSE in uu_tail::options::verbosity - Rust -

Static uu_tail::options::verbosity::VERBOSE[][src]

pub static VERBOSE: &str
+

Static uu_tail::options::verbosity::VERBOSE[][src]

pub static VERBOSE: &str
\ No newline at end of file diff --git a/dev/uu_touch/fn.uu_app.html b/dev/uu_touch/fn.uu_app.html index 98feccc21..804fb8b93 100644 --- a/dev/uu_touch/fn.uu_app.html +++ b/dev/uu_touch/fn.uu_app.html @@ -1,3 +1,3 @@ uu_app in uu_touch - Rust -

Function uu_touch::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
+

Function uu_touch::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
\ No newline at end of file diff --git a/dev/uu_touch/index.html b/dev/uu_touch/index.html index 193119e7e..45e69b1c3 100644 --- a/dev/uu_touch/index.html +++ b/dev/uu_touch/index.html @@ -1,5 +1,5 @@ uu_touch - Rust -

Crate uu_touch[][src]

Re-exports

+

Crate uu_touch[][src]

Re-exports

pub extern crate filetime;

Modules

Functions

diff --git a/dev/uu_truncate/fn.uu_app.html b/dev/uu_truncate/fn.uu_app.html index 8bf169117..76a9b593c 100644 --- a/dev/uu_truncate/fn.uu_app.html +++ b/dev/uu_truncate/fn.uu_app.html @@ -1,3 +1,3 @@ uu_app in uu_truncate - Rust -

Function uu_truncate::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
+

Function uu_truncate::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
\ No newline at end of file diff --git a/dev/uu_truncate/fn.uumain.html b/dev/uu_truncate/fn.uumain.html index 9d58e4143..83a912296 100644 --- a/dev/uu_truncate/fn.uumain.html +++ b/dev/uu_truncate/fn.uumain.html @@ -1,3 +1,3 @@ uumain in uu_truncate - Rust -

Function uu_truncate::uumain[][src]

pub fn uumain(args: impl Args) -> i32
+

Function uu_truncate::uumain[][src]

pub fn uumain(args: impl Args) -> i32
\ No newline at end of file diff --git a/dev/uu_truncate/index.html b/dev/uu_truncate/index.html index 20daaca6f..349e35722 100644 --- a/dev/uu_truncate/index.html +++ b/dev/uu_truncate/index.html @@ -1,5 +1,5 @@ uu_truncate - Rust -

Crate uu_truncate[][src]

Modules

+

Crate uu_truncate[][src]

Modules

Functions

\ No newline at end of file diff --git a/dev/uu_truncate/options/index.html b/dev/uu_truncate/options/index.html index 58170f7b2..e20cc4aad 100644 --- a/dev/uu_truncate/options/index.html +++ b/dev/uu_truncate/options/index.html @@ -1,4 +1,4 @@ uu_truncate::options - Rust -

Module uu_truncate::options[][src]

Statics

+

Module uu_truncate::options[][src]

Statics

\ No newline at end of file diff --git a/dev/uu_truncate/options/static.ARG_FILES.html b/dev/uu_truncate/options/static.ARG_FILES.html index 3e045ce97..e48498d39 100644 --- a/dev/uu_truncate/options/static.ARG_FILES.html +++ b/dev/uu_truncate/options/static.ARG_FILES.html @@ -1,3 +1,3 @@ ARG_FILES in uu_truncate::options - Rust -

Static uu_truncate::options::ARG_FILES[][src]

pub static ARG_FILES: &str
+

Static uu_truncate::options::ARG_FILES[][src]

pub static ARG_FILES: &str
\ No newline at end of file diff --git a/dev/uu_truncate/options/static.IO_BLOCKS.html b/dev/uu_truncate/options/static.IO_BLOCKS.html index 95f531403..7c0ed9c0b 100644 --- a/dev/uu_truncate/options/static.IO_BLOCKS.html +++ b/dev/uu_truncate/options/static.IO_BLOCKS.html @@ -1,3 +1,3 @@ IO_BLOCKS in uu_truncate::options - Rust -

Static uu_truncate::options::IO_BLOCKS[][src]

pub static IO_BLOCKS: &str
+

Static uu_truncate::options::IO_BLOCKS[][src]

pub static IO_BLOCKS: &str
\ No newline at end of file diff --git a/dev/uu_truncate/options/static.NO_CREATE.html b/dev/uu_truncate/options/static.NO_CREATE.html index 33e9a7e37..3b5194359 100644 --- a/dev/uu_truncate/options/static.NO_CREATE.html +++ b/dev/uu_truncate/options/static.NO_CREATE.html @@ -1,3 +1,3 @@ NO_CREATE in uu_truncate::options - Rust -

Static uu_truncate::options::NO_CREATE[][src]

pub static NO_CREATE: &str
+

Static uu_truncate::options::NO_CREATE[][src]

pub static NO_CREATE: &str
\ No newline at end of file diff --git a/dev/uu_truncate/options/static.REFERENCE.html b/dev/uu_truncate/options/static.REFERENCE.html index 7667253d4..b0101eae8 100644 --- a/dev/uu_truncate/options/static.REFERENCE.html +++ b/dev/uu_truncate/options/static.REFERENCE.html @@ -1,3 +1,3 @@ REFERENCE in uu_truncate::options - Rust -

Static uu_truncate::options::REFERENCE[][src]

pub static REFERENCE: &str
+

Static uu_truncate::options::REFERENCE[][src]

pub static REFERENCE: &str
\ No newline at end of file diff --git a/dev/uu_truncate/options/static.SIZE.html b/dev/uu_truncate/options/static.SIZE.html index 10504d0f7..7abc950bb 100644 --- a/dev/uu_truncate/options/static.SIZE.html +++ b/dev/uu_truncate/options/static.SIZE.html @@ -1,3 +1,3 @@ SIZE in uu_truncate::options - Rust -

Static uu_truncate::options::SIZE[][src]

pub static SIZE: &str
+

Static uu_truncate::options::SIZE[][src]

pub static SIZE: &str
\ No newline at end of file diff --git a/dev/uu_wc/all.html b/dev/uu_wc/all.html index 9efa484c4..7dcc34ca2 100644 --- a/dev/uu_wc/all.html +++ b/dev/uu_wc/all.html @@ -1,5 +1,5 @@ List of all items in this crate

List of all items[] -

Functions

Statics

+

Functions

Statics

\ No newline at end of file diff --git a/dev/uu_wc/fn.uu_app.html b/dev/uu_wc/fn.uu_app.html index 358fe8647..0bbfe8274 100644 --- a/dev/uu_wc/fn.uu_app.html +++ b/dev/uu_wc/fn.uu_app.html @@ -1,3 +1,3 @@ uu_app in uu_wc - Rust -

Function uu_wc::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
+

Function uu_wc::uu_app[][src]

pub fn uu_app<'a>() -> App<'a>
\ No newline at end of file diff --git a/dev/uu_wc/fn.uumain.html b/dev/uu_wc/fn.uumain.html index df66b2d28..52eeea39a 100644 --- a/dev/uu_wc/fn.uumain.html +++ b/dev/uu_wc/fn.uumain.html @@ -1,3 +1,3 @@ uumain in uu_wc - Rust -

Function uu_wc::uumain[][src]

pub fn uumain(args: impl Args) -> i32
+

Function uu_wc::uumain[][src]

pub fn uumain(args: impl Args) -> i32
\ No newline at end of file diff --git a/dev/uu_wc/index.html b/dev/uu_wc/index.html index e217dc083..b5479b766 100644 --- a/dev/uu_wc/index.html +++ b/dev/uu_wc/index.html @@ -1,5 +1,5 @@ uu_wc - Rust -

Crate uu_wc[][src]

Modules

+

Crate uu_wc[][src]

Modules

Functions

\ No newline at end of file diff --git a/dev/uu_wc/options/index.html b/dev/uu_wc/options/index.html index 6a3e91600..f288577ab 100644 --- a/dev/uu_wc/options/index.html +++ b/dev/uu_wc/options/index.html @@ -1,4 +1,4 @@ uu_wc::options - Rust -

Module uu_wc::options[][src]

Statics

-
+

Module uu_wc::options[][src]

Statics

+
\ No newline at end of file diff --git a/dev/uu_wc/options/sidebar-items.js b/dev/uu_wc/options/sidebar-items.js index 1552faad1..aac99ae1f 100644 --- a/dev/uu_wc/options/sidebar-items.js +++ b/dev/uu_wc/options/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"static":[["BYTES",""],["CHAR",""],["LINES",""],["MAX_LINE_LENGTH",""],["WORDS",""]]}); \ No newline at end of file +initSidebarItems({"static":[["BYTES",""],["CHAR",""],["FILES0_FROM",""],["LINES",""],["MAX_LINE_LENGTH",""],["WORDS",""]]}); \ No newline at end of file diff --git a/dev/uu_wc/options/static.BYTES.html b/dev/uu_wc/options/static.BYTES.html index 84cc760d1..7f284dbf6 100644 --- a/dev/uu_wc/options/static.BYTES.html +++ b/dev/uu_wc/options/static.BYTES.html @@ -1,3 +1,3 @@ BYTES in uu_wc::options - Rust -

Static uu_wc::options::BYTES[][src]

pub static BYTES: &str
+

Static uu_wc::options::BYTES[][src]

pub static BYTES: &str
\ No newline at end of file diff --git a/dev/uu_wc/options/static.CHAR.html b/dev/uu_wc/options/static.CHAR.html index 0fb76245a..1b0db31f5 100644 --- a/dev/uu_wc/options/static.CHAR.html +++ b/dev/uu_wc/options/static.CHAR.html @@ -1,3 +1,3 @@ CHAR in uu_wc::options - Rust -

Static uu_wc::options::CHAR[][src]

pub static CHAR: &str
+

Static uu_wc::options::CHAR[][src]

pub static CHAR: &str
\ No newline at end of file diff --git a/dev/uu_wc/options/static.FILES0_FROM.html b/dev/uu_wc/options/static.FILES0_FROM.html new file mode 100644 index 000000000..02b467881 --- /dev/null +++ b/dev/uu_wc/options/static.FILES0_FROM.html @@ -0,0 +1,3 @@ +FILES0_FROM in uu_wc::options - Rust +

Static uu_wc::options::FILES0_FROM[][src]

pub static FILES0_FROM: &str
+ \ No newline at end of file diff --git a/dev/uu_wc/options/static.LINES.html b/dev/uu_wc/options/static.LINES.html index fae22ed0f..5578eac42 100644 --- a/dev/uu_wc/options/static.LINES.html +++ b/dev/uu_wc/options/static.LINES.html @@ -1,3 +1,3 @@ LINES in uu_wc::options - Rust -

Static uu_wc::options::LINES[][src]

pub static LINES: &str
+

Static uu_wc::options::LINES[][src]

pub static LINES: &str
\ No newline at end of file diff --git a/dev/uu_wc/options/static.MAX_LINE_LENGTH.html b/dev/uu_wc/options/static.MAX_LINE_LENGTH.html index 5ab7309c2..6d9badb34 100644 --- a/dev/uu_wc/options/static.MAX_LINE_LENGTH.html +++ b/dev/uu_wc/options/static.MAX_LINE_LENGTH.html @@ -1,3 +1,3 @@ MAX_LINE_LENGTH in uu_wc::options - Rust -

Static uu_wc::options::MAX_LINE_LENGTH[][src]

pub static MAX_LINE_LENGTH: &str
+

Static uu_wc::options::MAX_LINE_LENGTH[][src]

pub static MAX_LINE_LENGTH: &str
\ No newline at end of file diff --git a/dev/uu_wc/options/static.WORDS.html b/dev/uu_wc/options/static.WORDS.html index 5574554f6..320e4e595 100644 --- a/dev/uu_wc/options/static.WORDS.html +++ b/dev/uu_wc/options/static.WORDS.html @@ -1,3 +1,3 @@ WORDS in uu_wc::options - Rust -

Static uu_wc::options::WORDS[][src]

pub static WORDS: &str
+

Static uu_wc::options::WORDS[][src]

pub static WORDS: &str
\ No newline at end of file diff --git a/dev/uucore/all.html b/dev/uucore/all.html index 23216eeb7..471f4a304 100644 --- a/dev/uucore/all.html +++ b/dev/uucore/all.html @@ -1,5 +1,5 @@ List of all items in this crate

List of all items[] -

Structs

Enums

Traits

Macros

Attribute Macros

Functions

Typedefs

Statics

Constants

+

Structs

Enums

Traits

Macros

Attribute Macros

Functions

Typedefs

Statics

Constants

\ No newline at end of file diff --git a/dev/uucore/enum.ConversionResult.html b/dev/uucore/enum.ConversionResult.html index b70ac0e61..6a7e8f7a7 100644 --- a/dev/uucore/enum.ConversionResult.html +++ b/dev/uucore/enum.ConversionResult.html @@ -1,8 +1,8 @@ ConversionResult in uucore - Rust -

Enum uucore::ConversionResult[][src]

pub enum ConversionResult {
+    

Enum uucore::ConversionResult[][src]

pub enum ConversionResult {
     Complete(Vec<String>),
     Lossy(Vec<String>),
-}

Variants

Complete(Vec<String>)

Tuple Fields

0: Vec<String>

Lossy(Vec<String>)

Tuple Fields

0: Vec<String>

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+}

Variants

Complete(Vec<String>)

Tuple Fields

0: Vec<String>

Lossy(Vec<String>)

Tuple Fields

0: Vec<String>

Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/dev/uucore/enum.InvalidEncodingHandling.html b/dev/uucore/enum.InvalidEncodingHandling.html index 100f52a4d..cb3f3fb28 100644 --- a/dev/uucore/enum.InvalidEncodingHandling.html +++ b/dev/uucore/enum.InvalidEncodingHandling.html @@ -1,5 +1,5 @@ InvalidEncodingHandling in uucore - Rust -

Enum uucore::InvalidEncodingHandling[][src]

pub enum InvalidEncodingHandling {
+    

Enum uucore::InvalidEncodingHandling[][src]

pub enum InvalidEncodingHandling {
     Ignore,
     ConvertLossy,
     Panic,
diff --git a/dev/uucore/features/lines/fn.lines.html b/dev/uucore/features/lines/fn.lines.html
new file mode 100644
index 000000000..f8bef3623
--- /dev/null
+++ b/dev/uucore/features/lines/fn.lines.html
@@ -0,0 +1,11 @@
+
+
+
+    
+    Redirection
+
+
+    

Redirecting to ../../../uucore/lines/fn.lines.html...

+ + + \ No newline at end of file diff --git a/dev/uucore/features/lines/index.html b/dev/uucore/features/lines/index.html new file mode 100644 index 000000000..061e09abe --- /dev/null +++ b/dev/uucore/features/lines/index.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../uucore/lines/index.html...

+ + + \ No newline at end of file diff --git a/dev/uucore/features/lines/struct.Lines.html b/dev/uucore/features/lines/struct.Lines.html new file mode 100644 index 000000000..f6116484a --- /dev/null +++ b/dev/uucore/features/lines/struct.Lines.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../../uucore/lines/struct.Lines.html...

+ + + \ No newline at end of file diff --git a/dev/uucore/fn.args_os.html b/dev/uucore/fn.args_os.html index 2b211aff2..21ddf526b 100644 --- a/dev/uucore/fn.args_os.html +++ b/dev/uucore/fn.args_os.html @@ -1,3 +1,3 @@ args_os in uucore - Rust -

Function uucore::args_os[][src]

pub fn args_os() -> impl Iterator<Item = OsString>
+

Function uucore::args_os[][src]

pub fn args_os() -> impl Iterator<Item = OsString>
\ No newline at end of file diff --git a/dev/uucore/fn.execution_phrase.html b/dev/uucore/fn.execution_phrase.html index 0d4d95218..01a342401 100644 --- a/dev/uucore/fn.execution_phrase.html +++ b/dev/uucore/fn.execution_phrase.html @@ -1,4 +1,4 @@ execution_phrase in uucore - Rust -

Function uucore::execution_phrase[][src]

pub fn execution_phrase() -> &'static str
Expand description

Derive the complete execution phrase for “usage”.

+

Function uucore::execution_phrase[][src]

pub fn execution_phrase() -> &'static str
Expand description

Derive the complete execution phrase for “usage”.

\ No newline at end of file diff --git a/dev/uucore/fn.get_utility_is_second_arg.html b/dev/uucore/fn.get_utility_is_second_arg.html index dfa8d6cf5..10fc89c58 100644 --- a/dev/uucore/fn.get_utility_is_second_arg.html +++ b/dev/uucore/fn.get_utility_is_second_arg.html @@ -1,3 +1,3 @@ get_utility_is_second_arg in uucore - Rust -

Function uucore::get_utility_is_second_arg[][src]

pub fn get_utility_is_second_arg() -> bool
+

Function uucore::get_utility_is_second_arg[][src]

pub fn get_utility_is_second_arg() -> bool
\ No newline at end of file diff --git a/dev/uucore/fn.set_utility_is_second_arg.html b/dev/uucore/fn.set_utility_is_second_arg.html index ac6ba1dfd..d43333540 100644 --- a/dev/uucore/fn.set_utility_is_second_arg.html +++ b/dev/uucore/fn.set_utility_is_second_arg.html @@ -1,3 +1,3 @@ set_utility_is_second_arg in uucore - Rust -

Function uucore::set_utility_is_second_arg[][src]

pub fn set_utility_is_second_arg()
+

Function uucore::set_utility_is_second_arg[][src]

pub fn set_utility_is_second_arg()
\ No newline at end of file diff --git a/dev/uucore/fn.util_name.html b/dev/uucore/fn.util_name.html index e316f94cf..b656c1c78 100644 --- a/dev/uucore/fn.util_name.html +++ b/dev/uucore/fn.util_name.html @@ -1,4 +1,4 @@ util_name in uucore - Rust -

Function uucore::util_name[][src]

pub fn util_name() -> &'static str
Expand description

Derive the utility name.

+

Function uucore::util_name[][src]

pub fn util_name() -> &'static str
Expand description

Derive the utility name.

\ No newline at end of file diff --git a/dev/uucore/index.html b/dev/uucore/index.html index 2ac9c9ddd..0fcaa717e 100644 --- a/dev/uucore/index.html +++ b/dev/uucore/index.html @@ -1,11 +1,12 @@ uucore - Rust -

Crate uucore[][src]

Re-exports

+

Crate uucore[][src]

Re-exports

pub extern crate libc;

Modules

Implement GNU-style backup functionality.

Get password/group file entry

All utils return exit with an exit code. Usually, the following scheme is used:

Set of functions to manage files and symlinks

Set of functions to manage file systems

+

Iterate over lines, including the line ending character(s).

Memo runner of printf Takes a format string and arguments

Set of functions to parse modes

diff --git a/dev/uucore/lines/fn.lines.html b/dev/uucore/lines/fn.lines.html new file mode 100644 index 000000000..cf42984be --- /dev/null +++ b/dev/uucore/lines/fn.lines.html @@ -0,0 +1,33 @@ +lines in uucore::lines - Rust +

Function uucore::lines::lines[][src]

pub fn lines<B>(reader: B, sep: u8) -> Lines<B>
Notable traits for Lines<B>
impl<B: BufRead> Iterator for Lines<B> type Item = Result<Vec<u8>>;
where
    B: BufRead
Expand description

Returns an iterator over the lines, including line ending characters.

+

This function is just like BufRead::lines, but it includes the +line ending characters in each yielded String if the input +data has them. Set the sep parameter to the line ending +character; for Unix line endings, use b'\n'.

+

Examples

+

Use sep to specify an alternate character for line endings. For +example, if lines are terminated by the null character b'\0':

+ +
use std::io::BufRead;
+use std::io::Cursor;
+
+let cursor = Cursor::new(b"x\0y\0z\0");
+let mut it = lines(cursor, b'\0').map(|l| l.unwrap());
+
+assert_eq!(it.next(), Some(Vec::from("x\0")));
+assert_eq!(it.next(), Some(Vec::from("y\0")));
+assert_eq!(it.next(), Some(Vec::from("z\0")));
+assert_eq!(it.next(), None);
+

If the input data does not end with a newline character ('\n'), +then the last String yielded by this iterator also does not +end with a newline:

+ +
let cursor = Cursor::new(b"x\ny\nz");
+let mut it = lines(cursor, b'\n').map(|l| l.unwrap());
+
+assert_eq!(it.next(), Some(Vec::from("x\n")));
+assert_eq!(it.next(), Some(Vec::from("y\n")));
+assert_eq!(it.next(), Some(Vec::from("z")));
+assert_eq!(it.next(), None);
+
+ \ No newline at end of file diff --git a/dev/uucore/lines/index.html b/dev/uucore/lines/index.html new file mode 100644 index 000000000..b3f8693f1 --- /dev/null +++ b/dev/uucore/lines/index.html @@ -0,0 +1,16 @@ +uucore::lines - Rust +

Module uucore::lines[][src]

Expand description

Iterate over lines, including the line ending character(s).

+

This module provides the lines function, similar to the +BufRead::lines method. While the BufRead::lines method +yields String instances that do not include the line ending +characters ("\n" or "\r\n"), our functions yield +Vec<[‘u8’]> instances that include the line ending +characters. This is useful if the input data does not end with a +newline character and you want to preserve the exact form of the +input data.

+

Structs

+

An iterator over the lines of an instance of BufRead.

+

Functions

+

Returns an iterator over the lines, including line ending characters.

+
+ \ No newline at end of file diff --git a/dev/uucore/lines/sidebar-items.js b/dev/uucore/lines/sidebar-items.js new file mode 100644 index 000000000..52c6c2901 --- /dev/null +++ b/dev/uucore/lines/sidebar-items.js @@ -0,0 +1 @@ +initSidebarItems({"fn":[["lines","Returns an iterator over the lines, including line ending characters."]],"struct":[["Lines","An iterator over the lines of an instance of `BufRead`."]]}); \ No newline at end of file diff --git a/dev/uucore/lines/struct.Lines.html b/dev/uucore/lines/struct.Lines.html new file mode 100644 index 000000000..86422108c --- /dev/null +++ b/dev/uucore/lines/struct.Lines.html @@ -0,0 +1,326 @@ +Lines in uucore::lines - Rust +

Struct uucore::lines::Lines[][src]

pub struct Lines<B> { /* fields omitted */ }
Expand description

An iterator over the lines of an instance of BufRead.

+

This struct is generally created by calling lines on a BufRead. +Please see the documentation of lines for more details.

+

Trait Implementations

The type of the elements being iterated over.

+

Advances the iterator and returns the next value. Read more

+

Returns the bounds on the remaining length of the iterator. Read more

+

Consumes the iterator, counting the number of iterations and returning it. Read more

+

Consumes the iterator, returning the last element. Read more

+
🔬 This is a nightly-only experimental API. (iter_advance_by)

Advances the iterator by n elements. Read more

+

Returns the nth element of the iterator. Read more

+

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more

+

Takes two iterators and creates a new iterator over both in sequence. Read more

+

‘Zips up’ two iterators into a single iterator of pairs. Read more

+
🔬 This is a nightly-only experimental API. (iter_intersperse)

Creates a new iterator which places a copy of separator between adjacent +items of the original iterator. Read more

+
🔬 This is a nightly-only experimental API. (iter_intersperse)

Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more

+

Takes a closure and creates an iterator which calls that closure on each +element. Read more

+

Calls a closure on each element of an iterator. Read more

+

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more

+

Creates an iterator that both filters and maps. Read more

+

Creates an iterator which gives the current iteration count as well as +the next value. Read more

+

Creates an iterator which can use the peek and peek_mut methods +to look at the next element of the iterator without consuming it. See +their documentation for more information. Read more

+

Creates an iterator that skips elements based on a predicate. Read more

+

Creates an iterator that yields elements based on a predicate. Read more

+

Creates an iterator that both yields elements based on a predicate and maps. Read more

+

Creates an iterator that skips the first n elements. Read more

+

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more

+

An iterator adapter similar to fold that holds internal state and +produces a new iterator. Read more

+

Creates an iterator that works like map, but flattens nested structure. Read more

+

Creates an iterator that flattens nested structure. Read more

+

Creates an iterator which ends after the first None. Read more

+

Does something with each element of an iterator, passing the value on. Read more

+

Borrows an iterator, rather than consuming it. Read more

+

Transforms an iterator into a collection. Read more

+

Consumes an iterator, creating two collections from it. Read more

+
🔬 This is a nightly-only experimental API. (iter_partition_in_place)

Reorders the elements of this iterator in-place according to the given predicate, +such that all those that return true precede all those that return false. +Returns the number of true elements found. Read more

+
🔬 This is a nightly-only experimental API. (iter_is_partitioned)

Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more

+

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more

+

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more

+

Folds every element into an accumulator by applying an operation, +returning the final result. Read more

+

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more

+

Tests if every element of the iterator matches a predicate. Read more

+

Tests if any element of the iterator matches a predicate. Read more

+

Searches for an element of an iterator that satisfies a predicate. Read more

+

Applies function to the elements of iterator and returns +the first non-none result. Read more

+
🔬 This is a nightly-only experimental API. (try_find)

Applies function to the elements of iterator and returns +the first true result or the first error. Read more

+

Searches for an element in an iterator, returning its index. Read more

+

Searches for an element in an iterator from the right, returning its +index. Read more

+

Returns the maximum element of an iterator. Read more

+

Returns the minimum element of an iterator. Read more

+

Returns the element that gives the maximum value from the +specified function. Read more

+

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more

+

Returns the element that gives the minimum value from the +specified function. Read more

+

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more

+

Reverses an iterator’s direction. Read more

+

Converts an iterator of pairs into a pair of containers. Read more

+

Creates an iterator which copies all of its elements. Read more

+

Creates an iterator which clones all of its elements. Read more

+

Repeats an iterator endlessly. Read more

+

Sums the elements of an iterator. Read more

+

Iterates over the entire iterator, multiplying all the elements Read more

+

Lexicographically compares the elements of this Iterator with those +of another. Read more

+
🔬 This is a nightly-only experimental API. (iter_order_by)

Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more

+

Lexicographically compares the elements of this Iterator with those +of another. Read more

+
🔬 This is a nightly-only experimental API. (iter_order_by)

Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more

+

Determines if the elements of this Iterator are equal to those of +another. Read more

+
🔬 This is a nightly-only experimental API. (iter_order_by)

Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more

+

Determines if the elements of this Iterator are unequal to those of +another. Read more

+

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more

+

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more

+

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more

+

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more

+
🔬 This is a nightly-only experimental API. (is_sorted)

Checks if the elements of this iterator are sorted. Read more

+
🔬 This is a nightly-only experimental API. (is_sorted)

Checks if the elements of this iterator are sorted using the given comparator function. Read more

+
🔬 This is a nightly-only experimental API. (is_sorted)

Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Immutably borrows from an owned value. Read more

+

Mutably borrows from an owned value. Read more

+

Performs the conversion.

+

Performs the conversion.

+

The type of the elements being iterated over.

+

Which kind of iterator are we turning this into?

+

Creates an iterator from a value. Read more

+

Alternate elements from two iterators until both have run out. Read more

+

Alternate elements from two iterators until at least one of them has run +out. Read more

+

An iterator adaptor to insert a particular value +between each element of the adapted iterator. Read more

+

An iterator adaptor to insert a particular value created by a function +between each element of the adapted iterator. Read more

+

Create an iterator which iterates over both this and the specified +iterator simultaneously, yielding pairs of two optional elements. Read more

+

Create an iterator which iterates over both this and the specified +iterator simultaneously, yielding pairs of elements. Read more

+

A “meta iterator adaptor”. Its closure receives a reference to the +iterator and may pick off as many elements as it likes, to produce the +next iterator element. Read more

+

Return an iterable that can group iterator elements. +Consecutive elements that map to the same key (“runs”), are assigned +to the same group. Read more

+

Return an iterable that can chunk the iterator. Read more

+

Return an iterator over all contiguous windows producing tuples of +a specific size (up to 12). Read more

+

Return an iterator over all windows, wrapping back to the first +elements when the window would otherwise exceed the length of the +iterator, producing tuples of a specific size (up to 12). Read more

+

Return an iterator that groups the items in tuples of a specific size +(up to 12). Read more

+

Split into an iterator pair that both yield all elements from +the original iterator. Read more

+
👎 Deprecated since 0.8.0:

Use std .step_by() instead

+

Return an iterator adaptor that steps n elements in the base iterator +for each iteration. Read more

+

Convert each item of the iterator using the Into trait. Read more

+
👎 Deprecated since 0.10.0:

Use .map_ok() instead

+

See .map_ok().

+

Return an iterator adaptor that applies the provided closure +to every Result::Ok value. Result::Err values are +unchanged. Read more

+

Return an iterator adaptor that filters every Result::Ok +value with the provided closure. Result::Err values are +unchanged. Read more

+

Return an iterator adaptor that filters and transforms every +Result::Ok value with the provided closure. Result::Err +values are unchanged. Read more

+

Return an iterator adaptor that flattens every Result::Ok value into +a series of Result::Ok values. Result::Err values are unchanged. Read more

+

Return an iterator adaptor that merges the two base iterators in +ascending order. If both base iterators are sorted (ascending), the +result is sorted. Read more

+

Return an iterator adaptor that merges the two base iterators in order. +This is much like .merge() but allows for a custom ordering. Read more

+

Create an iterator that merges items from both this and the specified +iterator in ascending order. Read more

+

Return an iterator adaptor that flattens an iterator of iterators by +merging them in ascending order. Read more

+

Return an iterator adaptor that flattens an iterator of iterators by +merging them according to the given closure. Read more

+

Return an iterator adaptor that iterates over the cartesian product of +the element sets of two iterators self and J. Read more

+

Return an iterator adaptor that iterates over the cartesian product of +all subiterators returned by meta-iterator self. Read more

+

Return an iterator adaptor that uses the passed-in closure to +optionally merge together consecutive elements. Read more

+

Remove duplicates from sections of consecutive identical elements. +If the iterator is sorted, all elements will be unique. Read more

+

Remove duplicates from sections of consecutive identical elements, +determining equality using a comparison function. +If the iterator is sorted, all elements will be unique. Read more

+

Remove duplicates from sections of consecutive identical elements, while keeping a count of +how many repeated elements were present. +If the iterator is sorted, all elements will be unique. Read more

+

Remove duplicates from sections of consecutive identical elements, while keeping a count of +how many repeated elements were present. +This will determine equality using a comparison function. +If the iterator is sorted, all elements will be unique. Read more

+

Return an iterator adaptor that produces elements that appear more than once during the +iteration. Duplicates are detected using hash and equality. Read more

+

Return an iterator adaptor that produces elements that appear more than once during the +iteration. Duplicates are detected using hash and equality. Read more

+

Return an iterator adaptor that filters out elements that have +already been produced once during the iteration. Duplicates +are detected using hash and equality. Read more

+

Return an iterator adaptor that filters out elements that have +already been produced once during the iteration. Read more

+

Return an iterator adaptor that borrows from this iterator and +takes items while the closure accept returns true. Read more

+

Return an iterator adaptor that borrows from a Clone-able iterator +to only pick off elements while the predicate accept returns true. Read more

+

Return an iterator adaptor that filters Option<A> iterator elements +and produces A. Stops on the first None encountered. Read more

+

Return an iterator adaptor that iterates over the combinations of the +elements from an iterator. Read more

+

Return an iterator adaptor that iterates over the k-length combinations of +the elements from an iterator. Read more

+

Return an iterator that iterates over the k-length combinations of +the elements from an iterator, with replacement. Read more

+

Return an iterator adaptor that iterates over all k-permutations of the +elements from an iterator. Read more

+

Return an iterator that iterates through the powerset of the elements from an +iterator. Read more

+

Return an iterator adaptor that pads the sequence to a minimum length of +min by filling missing elements using a closure f. Read more

+

Return an iterator adaptor that wraps each element in a Position to +ease special-case handling of the first or last elements. Read more

+

Return an iterator adaptor that yields the indices of all elements +satisfying a predicate, counted from the start of the iterator. Read more

+

Return an iterator adaptor that applies a mutating function +to each element before yielding it. Read more

+

Advances the iterator and returns the next items grouped in a tuple of +a specific size (up to 12). Read more

+

Collects all items from the iterator into a tuple of a specific size +(up to 12). Read more

+

Find the position and value of the first element satisfying a predicate. Read more

+

Find the value of the first element satisfying a predicate or return the last element, if any. Read more

+

Find the value of the first element satisfying a predicate or return the first element, if any. Read more

+

Returns true if the given item is present in this iterator. Read more

+

Check whether all elements compare equal. Read more

+

Check whether all elements are unique (non equal). Read more

+

Consume the first n elements from the iterator eagerly, +and return the same iterator again. Read more

+

Consume the last n elements from the iterator eagerly, +and return the same iterator again. Read more

+
👎 Deprecated since 0.8.0:

Use .for_each() instead

+

Run the closure f eagerly on each element of the iterator. Read more

+

Combine all an iterator’s elements into one element by using Extend. Read more

+

.collect_vec() is simply a type specialization of Iterator::collect, +for convenience. Read more

+

.try_collect() is more convenient way of writing +.collect::<Result<_, _>>() Read more

+

Assign to each reference in self from the from iterator, +stopping at the shortest of the two iterators. Read more

+

Combine all iterator elements into one String, separated by sep. Read more

+

Format all iterator elements, separated by sep. Read more

+

Format all iterator elements, separated by sep. Read more

+
👎 Deprecated since 0.10.0:

Use .fold_ok() instead

+

See .fold_ok().

+

Fold Result values from an iterator. Read more

+

Fold Option values from an iterator. Read more

+
👎 Deprecated since 0.10.2:

Use Iterator::reduce instead

+

Accumulator of the elements in the iterator. Read more

+

Accumulate the elements in the iterator in a tree-like manner. Read more

+

An iterator method that applies a function, producing a single, final value. Read more

+

Iterate over the entire iterator and add all the elements. Read more

+

Iterate over the entire iterator and multiply all the elements. Read more

+

Sort all iterator elements into a new iterator in ascending order. Read more

+

Sort all iterator elements into a new iterator in ascending order. Read more

+

Sort all iterator elements into a new iterator in ascending order. Read more

+

Sort all iterator elements into a new iterator in ascending order. Read more

+

Sort all iterator elements into a new iterator in ascending order. Read more

+

Sort all iterator elements into a new iterator in ascending order. Read more

+

Sort all iterator elements into a new iterator in ascending order. The key function is +called exactly once per key. Read more

+

Sort the k smallest elements into a new iterator, in ascending order. Read more

+

Collect all iterator elements into one of two +partitions. Unlike Iterator::partition, each partition may +have a distinct type. Read more

+

Partition a sequence of Results into one list of all the Ok elements +and another list of all the Err elements. Read more

+

Return a HashMap of keys mapped to Vecs of values. Keys and values +are taken from (Key, Value) tuple pairs yielded by the input iterator. Read more

+

Return an Iterator on a HashMap. Keys mapped to Vecs of values. The key is specified +in the closure. Read more

+

Constructs a GroupingMap to be used later with one of the efficient +group-and-fold operations it allows to perform. Read more

+

Constructs a GroupingMap to be used later with one of the efficient +group-and-fold operations it allows to perform. Read more

+

Return the minimum and maximum elements in the iterator. Read more

+

Return the minimum and maximum element of an iterator, as determined by +the specified function. Read more

+

Return the minimum and maximum element of an iterator, as determined by +the specified comparison function. Read more

+

Return the position of the maximum element in the iterator. Read more

+

Return the position of the maximum element in the iterator, as +determined by the specified function. Read more

+

Return the position of the maximum element in the iterator, as +determined by the specified comparison function. Read more

+

Return the position of the minimum element in the iterator. Read more

+

Return the position of the minimum element in the iterator, as +determined by the specified function. Read more

+

Return the position of the minimum element in the iterator, as +determined by the specified comparison function. Read more

+

Return the positions of the minimum and maximum elements in +the iterator. Read more

+

Return the postions of the minimum and maximum elements of an +iterator, as determined by the specified function. Read more

+

Return the postions of the minimum and maximum elements of an +iterator, as determined by the specified comparison function. Read more

+

If the iterator yields exactly one element, that element will be returned, otherwise +an error will be returned containing an iterator that has the same output as the input +iterator. Read more

+

If the iterator yields no elements, Ok(None) will be returned. If the iterator yields +exactly one element, that element will be returned, otherwise an error will be returned +containing an iterator that has the same output as the input iterator. Read more

+

An iterator adaptor that allows the user to peek at multiple .next() +values without advancing the base iterator. Read more

+

Collect the items in this iterator and return a HashMap which +contains each item that appears in the iterator and the number +of times it appears. Read more

+

Collect the items in this iterator and return a HashMap which +contains each item that appears in the iterator and the number +of times it appears, +determining identity using a keying function. Read more

+

Converts an iterator of tuples into a tuple of containers. Read more

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+

The type returned in the event of a conversion error.

+

Performs the conversion.

+
+ \ No newline at end of file diff --git a/dev/uucore/macro.bin.html b/dev/uucore/macro.bin.html index 5808c6167..6b579560f 100644 --- a/dev/uucore/macro.bin.html +++ b/dev/uucore/macro.bin.html @@ -1,5 +1,5 @@ bin in uucore - Rust -

Macro uucore::bin[][src]

macro_rules! bin {
+    

Macro uucore::bin[][src]

macro_rules! bin {
     ($util : ident) => { ... };
 }
diff --git a/dev/uucore/sidebar-items.js b/dev/uucore/sidebar-items.js index 904655cdd..5fdfd0d80 100644 --- a/dev/uucore/sidebar-items.js +++ b/dev/uucore/sidebar-items.js @@ -1 +1 @@ -initSidebarItems({"attr":[["main",""]],"enum":[["ConversionResult",""],["InvalidEncodingHandling",""]],"externcrate":[["libc",""]],"fn":[["args_os",""],["execution_phrase","Derive the complete execution phrase for “usage”."],["get_utility_is_second_arg",""],["set_utility_is_second_arg",""],["util_name","Derive the utility name."]],"macro":[["bin",""],["crash","Display an error and [`std::process::exit`]"],["crash_if_err","Unwrap a [`std::result::Result`], crashing instead of panicking."],["has",""],["show","Display a [`crate::error::UError`] and set global exit code."],["show_error","Show an error to stderr in a similar style to GNU coreutils."],["show_error_custom_description","Show a warning to stderr in a similar style to GNU coreutils."],["show_if_err","Display an error and set global exit code in error case."],["show_usage_error","Show a bad invocation help message in a similar style to GNU coreutils."],["show_warning","Print a warning message to stderr."],["uio_error","Shorthand to construct [`UIoError`]-instances."]],"mod":[["backup_control","Implement GNU-style backup functionality."],["display",""],["encoding",""],["entries","Get password/group file entry"],["error","All utils return exit with an exit code. Usually, the following scheme is used:"],["fs","Set of functions to manage files and symlinks"],["fsext","Set of functions to manage file systems"],["memo","Memo runner of printf Takes a format string and arguments"],["mode","Set of functions to parse modes"],["os",""],["panic","Custom panic hooks that allow silencing certain types of errors."],["parse_size",""],["parse_time",""],["perms","Common functions to manage permissions"],["pipes",""],["process","Set of functions to manage IDs"],["ranges",""],["ringbuffer","A fixed-size ring buffer."],["signals",""],["utmpx","Aims to provide platform-independent methods to obtain login records"],["version_cmp",""]],"trait":[["Args",""]]}); \ No newline at end of file +initSidebarItems({"attr":[["main",""]],"enum":[["ConversionResult",""],["InvalidEncodingHandling",""]],"externcrate":[["libc",""]],"fn":[["args_os",""],["execution_phrase","Derive the complete execution phrase for “usage”."],["get_utility_is_second_arg",""],["set_utility_is_second_arg",""],["util_name","Derive the utility name."]],"macro":[["bin",""],["crash","Display an error and [`std::process::exit`]"],["crash_if_err","Unwrap a [`std::result::Result`], crashing instead of panicking."],["has",""],["show","Display a [`crate::error::UError`] and set global exit code."],["show_error","Show an error to stderr in a similar style to GNU coreutils."],["show_error_custom_description","Show a warning to stderr in a similar style to GNU coreutils."],["show_if_err","Display an error and set global exit code in error case."],["show_usage_error","Show a bad invocation help message in a similar style to GNU coreutils."],["show_warning","Print a warning message to stderr."],["uio_error","Shorthand to construct [`UIoError`]-instances."]],"mod":[["backup_control","Implement GNU-style backup functionality."],["display",""],["encoding",""],["entries","Get password/group file entry"],["error","All utils return exit with an exit code. Usually, the following scheme is used:"],["fs","Set of functions to manage files and symlinks"],["fsext","Set of functions to manage file systems"],["lines","Iterate over lines, including the line ending character(s)."],["memo","Memo runner of printf Takes a format string and arguments"],["mode","Set of functions to parse modes"],["os",""],["panic","Custom panic hooks that allow silencing certain types of errors."],["parse_size",""],["parse_time",""],["perms","Common functions to manage permissions"],["pipes",""],["process","Set of functions to manage IDs"],["ranges",""],["ringbuffer","A fixed-size ring buffer."],["signals",""],["utmpx","Aims to provide platform-independent methods to obtain login records"],["version_cmp",""]],"trait":[["Args",""]]}); \ No newline at end of file diff --git a/dev/uucore/trait.Args.html b/dev/uucore/trait.Args.html index e868ec5f2..28972f0cc 100644 --- a/dev/uucore/trait.Args.html +++ b/dev/uucore/trait.Args.html @@ -1,8 +1,8 @@ Args in uucore - Rust -

Trait uucore::Args[][src]

pub trait Args: Iterator<Item = OsString> + Sized {
+    

Trait uucore::Args[][src]

pub trait Args: Iterator<Item = OsString> + Sized {
     fn collect_str(self, handling: InvalidEncodingHandling) -> ConversionResult { ... }
 
fn collect_str_lossy(self) -> ConversionResult { ... } -}

Provided methods

Converts each iterator item to a String and collects these into a vector +}

Provided methods

Converts each iterator item to a String and collects these into a vector On invalid encoding, the result will depend on the argument. This method allows to either drop entries with illegal encoding completely (InvalidEncodingHandling::Ignore), convert them using lossy-conversion (InvalidEncodingHandling::Lossy) which will result in strange strings or can chosen to panic (InvalidEncodingHandling::Panic).

@@ -14,6 +14,6 @@ result in strange strings or can chosen to panic (InvalidEncodingHandling:
  • Occurs, when invalid encoding is encountered and handling is set to InvalidEncodingHandling::Panic
-

convenience function for a more slim interface

-

Implementors

+

convenience function for a more slim interface

+

Implementors

\ No newline at end of file