mirror of
https://github.com/ratatui-org/ratatui
synced 2025-02-16 14:08:44 +00:00
feat(line)!: impl From<Cow<str>> for Line (#1373)
BREAKING-CHANGES: `Line` now implements `From<Cow<str>` As this adds an extra conversion, ambiguous infered values may no longer compile. ```rust // given: struct Foo { ... } impl From<Foo> for String { ... } impl From<Foo> for Cow<str> { ... } let foo = Foo { ... }; let line = Line::from(foo); // now fails due to ambiguous type inference // replace with let line = Line::from(String::from(foo)); ``` Fixes: https://github.com/ratatui/ratatui/issues/1367 --------- Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
This commit is contained in:
parent
69e0cd2fc4
commit
e5a7609588
2 changed files with 27 additions and 3 deletions
|
@ -11,6 +11,7 @@ GitHub with a [breaking change] label.
|
|||
This is a quick summary of the sections below:
|
||||
|
||||
- [v0.29.0](#v0290)
|
||||
- `Line` now implements `From<Cow<str>`
|
||||
- `Table::highlight_style` is now `Table::row_highlight_style`
|
||||
- `Tabs::select` now accepts `Into<Option<usize>>`
|
||||
- [v0.28.0](#v0280)
|
||||
|
@ -68,7 +69,25 @@ This is a quick summary of the sections below:
|
|||
- MSRV is now 1.63.0
|
||||
- `List` no longer ignores empty strings
|
||||
|
||||
## v0.29.0
|
||||
## v0.29.0 (Unreleased)
|
||||
|
||||
### `Line` now implements `From<Cow<str>` ([#1373])
|
||||
|
||||
[#1373]: https://github.com/ratatui/ratatui/pull/1373
|
||||
|
||||
As this adds an extra conversion, ambiguous inferred expressions may no longer compile.
|
||||
|
||||
```rust
|
||||
// given:
|
||||
struct Foo { ... }
|
||||
impl From<Foo> for String { ... }
|
||||
impl From<Foo> for Cow<str> { ... }
|
||||
|
||||
let foo = Foo { ... };
|
||||
let line = Line::from(foo); // now fails due to now ambiguous inferred type
|
||||
// replace with e.g.
|
||||
let line = Line::from(String::from(foo));
|
||||
```
|
||||
|
||||
### `Tabs::select()` now accepts `Into<Option<usize>>` ([#1413])
|
||||
|
||||
|
@ -163,8 +182,7 @@ are also named terminal, and confusion about module exports for newer Rust users
|
|||
|
||||
This change simplifies the trait and makes it easier to implement.
|
||||
|
||||
### `Frame::size` is deprecated and renamed to `Frame::area`
|
||||
|
||||
### `Frame::size` is deprecated and renamed to `Frame::area` ([#1293])
|
||||
|
||||
`Frame::size` is renamed to `Frame::area` as it's the more correct name.
|
||||
|
||||
|
|
|
@ -609,6 +609,12 @@ impl<'a> From<&'a str> for Line<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'a> From<Cow<'a, str>> for Line<'a> {
|
||||
fn from(s: Cow<'a, str>) -> Self {
|
||||
Self::raw(s)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> From<Vec<Span<'a>>> for Line<'a> {
|
||||
fn from(spans: Vec<Span<'a>>) -> Self {
|
||||
Self {
|
||||
|
|
Loading…
Add table
Reference in a new issue