Э
remove у VecDeque почти на сотню строк.Size: a a a
Э
remove у VecDeque почти на сотню строк.Э
в🧇
retain есть, мне кажется drain_filter не сильно сложнее 🤔MB
Э
retain есть, мне кажется drain_filter не сильно сложнее 🤔
Э
retain есть, мне кажется drain_filter не сильно сложнее 🤔false, а на всех остальных true, то будет len - 1 свапов.Э
MB
KK
my_macro!(и генерировал вот такой код:
fn get_download_url(&self, name: &str, expires_in: Option<Duration>) -> Option<String>
)
fn get_download_url(&self, name: &str, expires_in: Option<Duration>) -> Option<String> {
match self {
Adapter::Memory(adapter) => adapter.get_download_url(name, expires_in),
Adapter::S3(adapter) => adapter.get_download_url(name, expires_in),
}
}
Т.е. макросу надо "распарсить" хотя бы имя метода, его аргументы с типами (кроме &self) и тип результата, и просто подставить их в фиксированный шаблон.Э
fold, try_fold и прочей гадости, потому что vecdeque может быть двухслайсовый.в🧇
my_macro!(и генерировал вот такой код:
fn get_download_url(&self, name: &str, expires_in: Option<Duration>) -> Option<String>
)
fn get_download_url(&self, name: &str, expires_in: Option<Duration>) -> Option<String> {
match self {
Adapter::Memory(adapter) => adapter.get_download_url(name, expires_in),
Adapter::S3(adapter) => adapter.get_download_url(name, expires_in),
}
}
Т.е. макросу надо "распарсить" хотя бы имя метода, его аргументы с типами (кроме &self) и тип результата, и просто подставить их в фиксированный шаблон.в🧇
Э
my_macro!(и генерировал вот такой код:
fn get_download_url(&self, name: &str, expires_in: Option<Duration>) -> Option<String>
)
fn get_download_url(&self, name: &str, expires_in: Option<Duration>) -> Option<String> {
match self {
Adapter::Memory(adapter) => adapter.get_download_url(name, expires_in),
Adapter::S3(adapter) => adapter.get_download_url(name, expires_in),
}
}
Т.е. макросу надо "распарсить" хотя бы имя метода, его аргументы с типами (кроме &self) и тип результата, и просто подставить их в фиксированный шаблон.macro_rules! q {
(fn $fn_name:ident $(< $($generic:ident),+ >)? ($(&$(mut)?)? $(self,)? $(arg:ident : $arg_type: ty,)* ) $(-> $ret_type:ty)? ) => {};
}в🧇
macro_rules! q {
(fn $fn_name:ident $(< $($generic:ident),+ >)? ($(&$(mut)?)? $(self,)? $(arg:ident : $arg_type: ty,)* ) $(-> $ret_type:ty)? ) => {};
}&mut self не сможешь восстановитьв🧇
&mut self не сможешь восстановить$(self: $SelfTy:ty)?. (если хочется разных селфов)KK
&mut self не сможешь восстановитьв🧇
KK
V
KK