- Notifications
You must be signed in to change notification settings - Fork48
Fix to no copy when format with yansi_term#30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
@botika what's your take on I'm happy to land this PR, but I'm also curious on your opinion on that :) |
zzau13 commentedApr 1, 2020 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
The library is very simple, just enter a prefix and a suffix. So it does not need much maintenance nor can it innovate significantly. With the fork in the The reason for the PR is to remove all unnecessary |
I understand. I'm just curious on your take on long-term replacing |
It is more optimal implement |
I've been looking at So, the main problems of |
I updated thewrite bench, the results between The results are clear. The fastest way to write in Rust is to implement |
Thank you! |
Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRsfrom Renovate will soon appear from 'Mend'. Learn more[here](https://redirect.github.com/renovatebot/renovate/discussions/37842).This PR contains the following updates:| Package | Update | Change ||---|---|---|| [STABLE](https://redirect.github.com/rust-lang/rust) | minor | `1.89`-> `1.90` |---### Release Notes<details><summary>rust-lang/rust (STABLE)</summary>###[`v1.90`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1900-2025-09-18)[CompareSource](https://redirect.github.com/rust-lang/rust/compare/1.89.0...1.90.0)\===========================<a></a>## Language- [Split up the `unknown_or_malformed_diagnostic_attributes`lint](https://redirect.github.com/rust-lang/rust/pull/140717). This linthas been split up into four finer-grained lints, with`unknown_or_malformed_diagnostic_attributes` now being the lint groupthat contains these lints: 1. `unknown_diagnostic_attributes`: unknown to the current compiler 2. `misplaced_diagnostic_attributes`: placed on the wrong item3. `malformed_diagnostic_attributes`: malformed attribute syntax oroptions4. `malformed_diagnostic_format_literals`: malformed format stringliteral- [Allow constants whose final value has references to mutable/externalmemory, but reject such constants aspatterns](https://redirect.github.com/rust-lang/rust/pull/140942)- [Allow volatile access to non-Rust memory, including address0](https://redirect.github.com/rust-lang/rust/pull/141260)<a></a>## Compiler- [Use `lld` by default on`x86_64-unknown-linux-gnu`](https://redirect.github.com/rust-lang/rust/pull/140525).- [Tier 3 `musl` targets now link dynamically bydefault](https://redirect.github.com/rust-lang/rust/pull/144410).Affected targets: - `mips64-unknown-linux-muslabi64` - `powerpc64-unknown-linux-musl` - `powerpc-unknown-linux-musl` - `powerpc-unknown-linux-muslspe` - `riscv32gc-unknown-linux-musl` - `s390x-unknown-linux-musl` - `thumbv7neon-unknown-linux-musleabihf`<a></a>## Platform Support- [Demote `x86_64-apple-darwin` to Tier 2 with hosttools](https://redirect.github.com/rust-lang/rust/pull/145252)Refer to Rust's [platform support page][platform-support-doc]for more information on Rust's tiered platform support.[platform-support-doc]:https://doc.rust-lang.org/rustc/platform-support.html<a></a>## Libraries- [Stabilize`u*::{checked,overflowing,saturating,wrapping}_sub_signed`](https://redirect.github.com/rust-lang/rust/issues/126043)- [Allow comparisons between `CStr`, `CString`, and`Cow<CStr>`](https://redirect.github.com/rust-lang/rust/pull/137268)- [Remove some unsized tuple impls since unsized tuples can't beconstructed](https://redirect.github.com/rust-lang/rust/pull/138340)- [Set `MSG_NOSIGNAL` for`UnixStream`](https://redirect.github.com/rust-lang/rust/pull/140005)- [`proc_macro::Ident::new` now supports`$crate`.](https://redirect.github.com/rust-lang/rust/pull/141996)- [Guarantee the pointer returned from `Thread::into_raw` has at least 8bytes ofalignment](https://redirect.github.com/rust-lang/rust/pull/143859)<a></a>## Stabilized APIs-[`u{n}::checked_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.checked_sub_signed)-[`u{n}::overflowing_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.overflowing_sub_signed)-[`u{n}::saturating_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.saturating_sub_signed)-[`u{n}::wrapping_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.wrapping_sub_signed)- [`impl Copy forIntErrorKind`](https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Copy-for-IntErrorKind)- [`impl Hash forIntErrorKind`](https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Hash-for-IntErrorKind)- [`impl PartialEq<&CStr> forCStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3C%26CStr%3E-for-CStr)- [`impl PartialEq<CString> forCStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCString%3E-for-CStr)- [`impl PartialEq<Cow<CStr>> forCStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CStr)- [`impl PartialEq<&CStr> forCString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3C%26CStr%3E-for-CString)- [`impl PartialEq<CStr> forCString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCStr%3E-for-CString)- [`impl PartialEq<Cow<CStr>> forCString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CString)- [`impl PartialEq<&CStr> forCow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3C%26CStr%3E-for-Cow%3C'_,+CStr%3E)- [`impl PartialEq<CStr> forCow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCStr%3E-for-Cow%3C'_,+CStr%3E)- [`impl PartialEq<CString> forCow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCString%3E-for-Cow%3C'_,+CStr%3E)These previously stable APIs are now stable in const contexts:-[`<[T]>::reverse`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.reverse)-[`f32::floor`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.floor)-[`f32::ceil`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.ceil)-[`f32::trunc`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.trunc)-[`f32::fract`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)-[`f32::round`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round)-[`f32::round_ties_even`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round_ties_even)-[`f64::floor`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.floor)-[`f64::ceil`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.ceil)-[`f64::trunc`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.trunc)-[`f64::fract`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.fract)-[`f64::round`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round)-[`f64::round_ties_even`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round_ties_even)<a></a>## Cargo- [Add `http.proxy-cainfo` config for proxycerts](https://redirect.github.com/rust-lang/cargo/pull/15374/)- [Use `gix` for `cargopackage`](https://redirect.github.com/rust-lang/cargo/pull/15534/)- [feat(publish): Stabilize multi-packagepublishing](https://redirect.github.com/rust-lang/cargo/pull/15636/)<a></a>## Rustdoc- [Add ways to collapse all implblocks](https://redirect.github.com/rust-lang/rust/pull/141663).Previously the "Summary" button and "-" keyboard shortcut would nevercollapse `impl` blocks, now they do when shift is held- [Display unsafe attributes with `unsafe()`wrappers](https://redirect.github.com/rust-lang/rust/pull/143662)<a></a>## Compatibility Notes- [Use `lld` by default on`x86_64-unknown-linux-gnu`](https://redirect.github.com/rust-lang/rust/pull/140525).See also<https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/>.- [Make `core::iter::Fuse`'s `Default` impl construct `I::default()`internally as promised in the docs instead of always beingempty](https://redirect.github.com/rust-lang/rust/pull/140985)- [Set `MSG_NOSIGNAL` for`UnixStream`](https://redirect.github.com/rust-lang/rust/pull/140005)This may change program behavior but results in the same behavior asother primitives (e.g., stdout, network sockets).Programs relying on signals to terminate them should update handling ofsockets to handle errors on write by exiting.- [On Unix `std::env::home_dir` will use the fallback if the `HOME`environment variable isempty](https://redirect.github.com/rust-lang/rust/pull/141840)- We now [reject unsupported `extern "{abi}"`s consistently in allpositions](https://redirect.github.com/rust-lang/rust/pull/142134). Thisprimarily affects the use of implementing traits on an `extern "{abi}"`function pointer, like `extern "stdcall" fn()`, on a platform thatdoesn't support that, like aarch64-unknown-linux-gnu. Direct usage ofthese unsupported ABI strings by declaring or defining functions wasalready rejected, so this is only a change for consistency.- [const-eval: error when initializing a static writes to thatstatic](https://redirect.github.com/rust-lang/rust/pull/143084)- [Check that the `proc_macro_derive` macro has correct arguments whenapplied to the crateroot](https://redirect.github.com/rust-lang/rust/pull/143607)</details>---### Configuration📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC),Automerge - At any time (no schedule defined).🚦 **Automerge**: Enabled.♻ **Rebasing**: Whenever PR is behind base branch, or you tick therebase/retry checkbox.🔕 **Ignore**: Close this PR and you won't be reminded about this updateagain.---- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, checkthis box---This PR was generated by [Mend Renovate](https://mend.io/renovate/).View the [repository joblog](https://developer.mend.io/github/epage/_rust).<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS45Ny4xMCIsInVwZGF0ZWRJblZlciI6IjQxLjk3LjEwIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR eliminates the need to reallocate while formatting.
For this I have forked the
ansi_termlibrary to refactor tofmt::Displayallowing to introduce flow with a closure that takes the current formatter as argument.It will depend on
yansi-terminstead ofansi_term, which I will keep.