LINUX.ORG.RU

История изменений

Исправление theNamelessOne, (текущая версия) :

В чём проблема записывать свойства символов в виде plist?

Ну, на однострочниках легко демонстрировать превосходство синтаксиса с блекджеком и plist'ами. Но ты мне лучше покажи, как будет выглядеть на Lispy Rust следующий фрагмент, а то я сам попробовал, и мне результат не понравился.

#[must_use = "futures are lazy and do nothing unless consumed"]
pub struct Future<T: Send + 'static, E: Send + 'static> {
    pub core: Option<Core<T, E>>,
}

impl<T: Send + 'static, E: Send + 'static> Future<Option<(T, Stream<T, E>)>, E> {
    /// An adapter that converts any future into a one-value stream
    pub fn to_stream(mut self) -> Stream<T, E> {
        stream::from_core(core::take(&mut self.core))
    }
}

impl<T: Send + 'static, E: Send + 'static> Async for Future<T, E> {
    type Value = T;
    type Error = E;
    type Cancel = Receipt<Future<T, E>>;

    fn is_ready(&self) -> bool {
        core::get(&self.core).consumer_is_ready()
    }
}

И это, прошу заметить, далеко не самый навороченный (в плане сахара и синтаксиса) код на Rust.

Постарайся, чтобы код получился идентичным коду на Rust, и при этом синтаксис не получился неоднозначным с учётом того, что атрибуты, спецификаторы видимости и времени жизни, обобщенные аргументы, связанные типы и пр. опциональны.

Исходная версия theNamelessOne, :

В чём проблема записывать свойства символов в виде plist?

Ну, на однострочниках легко демонстрировать превосходство синтаксиса с блекджеком и plist'ами. Но ты мне лучше покажи, как будет выглядеть на Lispy Rust следующий фрагмент, а то я сам попробовал, и мне результат не понравился.

#[must_use = "futures are lazy and do nothing unless consumed"]
pub struct Future<T: Send + 'static, E: Send + 'static> {
    pub core: Option<Core<T, E>>,
}

impl<T: Send + 'static, E: Send + 'static> Async for Future<T, E> {
    type Value = T;
    type Error = E;
    type Cancel = Receipt<Future<T, E>>;

    fn is_ready(&self) -> bool {
        core::get(&self.core).consumer_is_ready()
    }
}

И это, прошу заметить, далеко не самый навороченный (в плане сахара и синтаксиса) код на Rust.