Conflicting implementation with slices and trait objects

⚓ Rust    📅 2026-02-03    👤 surdeus    👁️ 13      

surdeus

Warning

This post was published 76 days ago. The information described in this article may have changed.

Hi. I'm trying to compile this code, but it unexpectedly fails (I tried to reduce it to the smallest example possible).

#![feature(ptr_metadata)]

use std::ptr::{Pointee, DynMetadata};

trait Bar {}

impl<T> Bar for [T] {}

// error[E0119]: conflicting implementations of trait `Bar` for type `[_]`
impl<T> Bar for T
where
    T: Pointee<Metadata = DynMetadata<T>> + ?Sized,
{}

try on playground: Rust Playground

Rust version: 1.95.0-nightly (2026-02-02), playground.

So, is something I'm doing wrong or is it too complex for the compiler to understand that [T] never implements Pointee<Metadata = DynMetadata<T>>?

11 posts - 4 participants

Read full topic

🏷️ Rust_feed