Cat
да, это вроде атрибуты
Cat
но кроме #[test] вряд ли что0то понаобится
Ned
И да, умеет ли cargo собирать файлы с разными параметрами компиляции, и т.д.
Ned
То есть, можно ли его использовать как типа замену make?
Сергей
#[derive()] же
Cat
а, да, derive
Tuntz
Ned
O_o зачем?
Ну, я пилю под низкий уровень, мне надо там линковать по-хитрому иногда
Ned
иногда асм вызывать, потом снова линковать
Ned
такое
Ned
Мне вот и любопытно, насколько раст пригоден для этого
Ned
и насколько cargo полезен в абсолюте
Ned
а то что-то вон Redox собирается make
Ned
и это в 2к18
Tuntz
https://doc.rust-lang.org/nomicon/ffi.html
Cat
а rustbyexample.com умер?
Cat
окончательно переехал на doc.rustlang?
Нави
приколюху поймал)))
в одних местах написал:
.to_string().parse().unwrap()
в других написал:
.as_str().unwrap().parse::<f32> ().unwrap()
дают один и тот же результат)
Vlad
Kerrigan
гм, а ведь можно писать:
let bla: Result = ....;
if(bla.is_ok()) {
do_something(bla.unwrap());
}
Cat
ну хоть бы редирект бы сделали
Kerrigan
не только го так может
Cat
но зачем, если можно сделать chain call?
Kerrigan
просто потому что могу
Cat
Kerrigan
или унврапить не нужно тогда?
Anton
перечитал book о оболочках
Anton
все таки
Anton
я не так и сильно обосрался выбрав Rc<RefCell<T»
Anton
так то это еще не самая плохая стратегия оказывается
Anton
а вот правила владения и особенности работы с ссылками я и правда уже забыл
Anton
хехехе
Andrey
պլհկ
Ned
Ned
(кинь что-нить про билд.рс)
Andrey
build.rs это если нужно что-то кроме раста в сборку добавить. с++ там или ещё что.
Andrey
проще всего с этого https://crates.io/crates/cc начать
Kerrigan
Судзумия
А должно
Kerrigan
https://play.rust-lang.org/?gist=e91ab774282cb8d9b9f957180b9ee77b&version=stable
Cat
Cat
должно быть if let =
Kerrigan
Andrey
Andrey
https://play.rust-lang.org/?gist=7f0b2453053e0c3ee9017e09e5438df2&version=stable
Kerrigan
да, как-то неудобнее
Kerrigan
но всё равно можно
Andrey
лучше ? ничего нету.
Судзумия
Слава Try и Deref!
Andrey
ну и немношк славы failure
Tuntz
вообще за пределами тестов и main() писать unwrap() - немножко моветон
Tuntz
(кроме отдельных случаев вроде std::sync::Mutex::lock())
Andrey
чтобы не писать unwrap или expect в main, я делаю так
fn real_main() -> Result<()> {
...
}
fn main() {
if let Err(err) = real_main() {
eprintln!("{:#?}", err);
exit(1);
}
}
Судзумия
Tuntz
моё имхо - main в идеальном мире:
fn main<E>() -> Result<(), E> where i32: std::convert::From<E>
Andrey
у меня там
type Result<T> = :: std :: result :: Result<T, :: failure :: Error >;
как из него код возврата получить, не ясно.
Tuntz
failure::Error - быстрокод
Tuntz
в перспективе надо оборачивать в свой тип ошибок
Судзумия
ЗАЧЕМ БОГ НАМ ДАЛ ФЕЙЛЮР ЕСЛИ ЛЮДИ ХОТЯТ ОБОРАЧИВАТЬ В СВОИ ТИПЫ
պլհկ
Воу воу
Tuntz
ну так withoutboats писал, что failure::Error - костыль )
պլհկ
В ерор чейне и оборачивали
Денис
Резулт уже давно можно в мейне в найтли возвращать: https://play.rust-lang.org/?gist=6ffadfec993ba5ab65631d8adaf28119&version=nightly
Tuntz
еррор-чейн плох тем, что макрос со своим синтаксисом )
Tuntz
подход-то правильный
պլհկ
Лол, будто процедурный макрос не макрос
պլհկ
Для ерор чейна тоже был дерайв
Andrey
макрос, но синтаксис не свой.
Andrey
то был эксперимент и толком дерайва для error-chain не было.
Tuntz
аннотации - это всё-таки не стена кода на DSL )
Andrey
код error-chain это само по себе ужас
Нави
Чем Ringbuffer лучше этого?
let temp = vec.pop().unwrap(); vec.insert(0, temp);
let temp = vec.remove(0); vec.push(temp);
Судзумия
Денис
Производительностью
Andrey
если внутри не Copy то remove это поштучный перенос всех элементов.
Нави
хм
Нави
а по другому поменять местами индексы предпологаю