Оффтопик-канал. Обсуждение вопросов, не связанных с Rust. Модерируется по тем же правилам, что и основной канал. Основной канал - тут: https://gitter.im/ruRust/general .
sectator
по крайней мере это звучит не слишком угрожающе, трейты наверное каким-нибудь расширающим наследованием можно заменить частично. Переход C → Rust достаточно болезненен был в моей памяти из-за передачи объектов во владение вместо передачи указателей и в целом отсутствием привычной работы с «сырой» памятью, чем вроде жава на страдаетsectator
спасибо за мнение
sectator
раст в этом деле тоже не безграничен — нельзя реализовать чужой трейт для чужого типа (вполне обоснованно), не прибегая к struct MyWrapper(TargetType); impl NotMyButStillCoolTrait for MyWrapper, а в ООП вроде бы можно наследоваться безгранично (в java вроде наложили опциональный запрет в виде final), хотя я не уверен, что это сильно поможет, я старался всегда избегать продвинутого ООП.
sectator
* раст в этом деле тоже не безграничен — нельзя реализовать чужой трейт для чужого типа (вполне обоснованно), не прибегая к struct MyWrapper(TargetType); impl NotMyButStillCoolTrait for MyWrapper, а в ООП вроде бы можно наследоваться безгранично (в java вроде наложили опциональный запрет в виде final), хотя я не уверен, что это сильно поможет, я старался всегда избегать продвинутого ООП (в С++, Delphi ничего не умел в то время, когда я с ним работал, а на всех остальных, с чем я работал — ООП был фикцией)
blkid
потом раздел примаунтить, сделать в него chroot
и позвать снова blkid
то UUID этого раздела показывает другой. А после exit снова UUID который был на первом вызове. И чтобы все грузилось, в /etc/fstab
надо писать тот uuid, который показывает когда мы внутри chroot
. Вот почему оно вообще показывает разные UUIDы?
tune2fs -U random /dev/sdd1
. До этой команды смотреть не пробовал
Вопрос по С++17
#include <variant>
#include <iostream>
template<typename ... Ts>
struct Overload : Ts ... {
using Ts::operator() ...; //(1)
};
template<class... Ts> Overload(Ts...) -> Overload<Ts...>;
int main(){
std::variant<char, int, float> v = 2017;
std::string typeOfIntegral = std::visit( Overload {
[](char) { return "char"; },
[](int) { return "int"; },
[](auto) { return "unknown type"; },
}, v);
std::cout << typeOfIntegral << std::endl;
}
ссыль: https://onlinegdb.com/lEOLUYb7T
Вопрос: как работает помеченная (1) конструкция? Во что ее разворачивает?