История изменений
Исправление DarkEld3r, (текущая версия) :
Примерно то же самое мне кажется сейчас.
«Я не специально». Правда. Так что объяснения буду рад услышать.
Как здесь поможет _компилятор_? Линковщик - может быть, но компилятор?
Возможно, ты прав. Честно говоря, просто не задумывался в какой момент станет понятно, что у нас несколько реализаций трейта. В любом случае, мне не особо нравится С++ подход, когда многие проблемы о которых линковщик мог бы сообщать «игнорируются» (в смысле UB, но обычно всё работает).
Но разве когда мы в программе пишем:
extern crate baz;
extern crate bletch;
Как подобный конфликт обходит предлагаемое тобой решение?
Например, так:
extern crate baz;
extern crate bletch;
// Переименовываем.
use baz::foo::FooTrait as BazFooTrait;
use bletch::foo::FooTrait as BletchFooTrait;
// Используем функцию foo из разных реализаций трейта FooTrait.
b.BazFooTrait::foo();
b.BletchFooTrait::foo();
Исходная версия DarkEld3r, :
Примерно то же самое мне кажется сейчас.
«Я не специально». Правда. Так что объяснения буду рад услышать.
Как здесь поможет _компилятор_? Линковщик - может быть, но компилятор?
Возможно, ты прав. Честно говоря, просто не задумывался в какой момент станет понятно, что у нас несколько реализаций трейта. В любом случае, мне не особо нравится С++ подход, когда многие проблемы о которых линковщик мог бы сообщать «игнорируются» (в смысле UB, но обычно всё работает).
Но разве когда мы в программе пишем:
extern crate baz;
extern crate bletch;
> Как подобный конфликт обходит предлагаемое тобой решение? Например, так:
extern crate baz;
extern crate bletch;
// Переименовываем.
use baz::foo::FooTrait as BazFooTrait;
use bletch::foo::FooTrait as BletchFooTrait;
// Используем функцию foo из разных реализаций трейта FooTrait.
b.BazFooTrait::foo();
b.BletchFooTrait::foo();