Противоречивые реализации черты в Rust

Я хочу реализовать пользовательскую черту для&'a str и для целых чисел доi32, но Rust не позволяет мне:

use std::convert::Into;

pub trait UiId {
    fn push(&self);
}

impl<'a> UiId for &'a str {
    fn push(&self) {}
}

impl<T: Into<i32>> UiId for T {
    fn push(&self) {}
}

fn main() {}

Это не компилируется со следующей ошибкой:

error[E0119]: conflicting implementations of trait `UiId` for type `&str`:
  --> src/main.rs:11:1
   |
7  | impl<'a> UiId for &'a str {
   | ------------------------- first implementation here
...
11 | impl<T: Into<i32>> UiId for T {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `&str`
   |
   = note: upstream crates may add new impl of trait `std::convert::From<&str>` for type `i32` in future versions

&'a str не реализуетInto<i32>, Возможно ли реализоватьUiId за&'a str и все, что может быть преобразовано вi32 без указания конкретных типов? Как я могу это сделать?

Ответы на вопрос(1)

Ваш ответ на вопрос