Вопросы по теме 'trait-objects'
Как передать Rc ‹RefCell‹ Box ‹MyStruct› ›› в функцию, принимающую Rc ‹RefCell‹ Box ‹dyn MyTrait ›››?
Первоначально я задавал этот вопрос здесь , но он был отмечен как повторяющийся , хотя, на мой взгляд, он дублирует только его часть, поэтому я создал более конкретный:
Рассмотрим следующий код:
use std::rc::Rc;
trait MyTrait {
fn...
2263 просмотров
schedule
14.07.2022
Функция, возвращающая замыкание, не работает внутри моего фильтра
Я не могу заставить это скомпилировать без использования закрытия. Я пытаюсь заставить функцию apply возвращать правильный тип закрытия в первую очередь.
#![feature(conservative_impl_trait)]
#![allow(dead_code)]
fn accumulate<'a>(tuples:...
2790 просмотров
schedule
29.06.2023
Сопоставить руки, возвращающие итераторы?
У меня есть код, который пытается выполнить сопоставление, где каждая ветвь может возвращать другой тип, но все эти типы реализуют Iterator<Item=usize> .
let found: Iterator<Item = usize> = match requirements {
Requirements::A...
607 просмотров
schedule
31.03.2024
В чем разница между ‹T: Trait› Box ‹T› и & Trait / Box ‹Trait›?
При написании кода с трейтами вы можете поместить трейт в привязку трейта:
use std::fmt::Debug;
fn myfunction1<T: Debug>(v: Box<T>) {
println!("{:?}", v);
}
fn myfunction2<T: Debug>(v: &T) {
println!("{:?}", v);
}...
833 просмотров
schedule
26.06.2023
Разница между &mut и ref mut для трейт-объектов
Прежде всего, я не спрашиваю, в чем разница между &mut и ref mut как таковыми.
Спрашиваю, потому что подумал:
let ref mut a = MyStruct
такой же как
let a = &mut MyStruct
Рассмотрим возврат трейт-объекта из функции. Вы...
1369 просмотров
schedule
11.03.2023
Как использовать трейт-объект в BinaryHeap?
У меня есть следующий упрощенный код:
use std::collections::BinaryHeap;
use std::rc::Rc;
struct JobId;
struct Coord;
struct TimeStep;
pub trait HasJob {
fn id(&self) -> JobId;
fn start(&self) -> Coord;
fn end(&self)...
167 просмотров
schedule
25.05.2022
Как использовать нестатические типажные объекты со связанными типами?
У меня такой тип:
struct Wrap<T>(Vec<T>);
Я хочу реализовать std::ops::Index и возвращать ссылки на объекты признаков. Это была моя первая попытка ( площадка ):
use std::ops::Index;
use std::fmt::Display;
impl<T>...
543 просмотров
schedule
09.07.2022
Почему нельзя вызвать функцию для объекта-признака, если она ограничена параметром Self: Sized?
У меня такой код:
trait Bar {
fn baz(&self, arg: impl AsRef<str>)
where
Self: Sized;
}
struct Foo;
impl Bar for Foo {
fn baz(&self, arg: impl AsRef<str>) {}
}
fn main() {
let boxed: Box<dyn Bar>...
2319 просмотров
schedule
12.09.2022
Ожидаемый трейт A, найденный &A при попытке упаковать трейт-объект
Я пытаюсь создать трейт, который может либо извлекать (и возвращать ссылку) объект трейта другого трейта, либо создавать его (и возвращать его коробочную версию), оставляя выбор разработчику (что означает, что мне нужно чтобы ограничить время жизни...
594 просмотров
schedule
19.06.2022
Смущен временем жизни Box‹Trait› в структуре
struct Wrap<'a> {
pub data: Option<&'a i32>,
}
pub trait Boxable {
fn get_data(&self) -> Option<&i32>;
}
impl<'a> Boxable for Wrap<'a> {
fn get_data(&self) -> Option<&i32> {...
65 просмотров
schedule
12.06.2022
указатель функции против объекта типажа Fn
fn do_twice(f: fn(i32) -> i32, arg: i32) -> i32 { // definition
f(arg) + f(arg)
}
do_twice(|x| x + 1, 5) // call
Эта функция принимает как замыкания, так и указатели на функции. Он принимает указатель на функцию в качестве типа...
2439 просмотров
schedule
15.10.2022
Какие контейнеры Rust 1.2 поддерживают трейт-объекты?
В руководстве Rust Edition говорится, что в Rust 1.2 дополнительные типы контейнеров поддерживают типы объектов . Он привел пример Rc<T> , но не дал полного списка. Какие еще контейнеры поддерживают трейт-объекты в Rust 1.2+?
148 просмотров
schedule
02.02.2024
Как преобразовать черту в конкретный тип?
У меня есть трейт-объект, и я хочу знать конкретный объект, на который он указывает, но я не могу понять, как получить этот конкретный объект.
Я хочу что-то вроде следующего:
trait MyClonable {
/** copy from another MyClonable */
fn...
306 просмотров
schedule
25.05.2022
Почему значение не преобразуется в типаж-объект с динамической отправкой в закрытии?
Учитывая следующий код:
use std::iter::Iterator;
trait Sequence {
type SeqType: Iterator<Item = u32>;
fn seq(&self) -> Option<Self::SeqType>;
}
struct Doubler<'a>(Option<&'a [u32]>);
impl<'a>...
349 просмотров
schedule
24.12.2022
В чем разница между `& Trait` и` & impl Trait`?
struct SA {
sa: u32,
}
trait T1 {
// fn action_static() -> bool {
// true
// }
fn action_ins(&self) -> bool {
true
}
}
impl T1 for SA {}
fn do_action_1(x: &T1) {
x.action_ins();
}
fn...
105 просмотров
schedule
27.04.2023
временная стоимость упала при заимствовании с закрытием захвата
Рассмотрим следующий пример ( детская площадка ):
struct Animal<'a> {
format: &'a dyn Fn() -> (),
}
impl <'a>Animal<'a> {
pub fn set_formatter(&mut self, _fmt: &'a dyn Fn() -> ()) -> () {} // Getting...
94 просмотров
schedule
29.05.2022
Утверждать равенство трейт-объектов?
Обычный макрос assert_eq! требует, чтобы PartialEq был реализован в структуре — у меня есть вектор трейт-объектов, Vec<Box<dyn Element>> , где Element — это трейт, требующий отладки, pub trait Element: std::fmt::Debug . Точно так же я...
71 просмотров
schedule
28.01.2023