fn from()

in src/protocol/resp/src/request/set.rs [168:213]


    fn from(other: &SetRequest) -> Message {
        let mut v = vec![
            Message::bulk_string(b"SET"),
            Message::BulkString(BulkString::from(other.key.clone())),
            Message::BulkString(BulkString::from(other.value.clone())),
        ];

        match other.expire_time {
            Some(ExpireTime::Seconds(s)) => {
                v.push(Message::bulk_string(b"EX"));
                v.push(Message::bulk_string(format!("{}", s).as_bytes()));
            }
            Some(ExpireTime::Milliseconds(ms)) => {
                v.push(Message::bulk_string(b"PX"));
                v.push(Message::bulk_string(format!("{}", ms).as_bytes()));
            }
            Some(ExpireTime::UnixSeconds(s)) => {
                v.push(Message::bulk_string(b"EXAT"));
                v.push(Message::bulk_string(format!("{}", s).as_bytes()));
            }
            Some(ExpireTime::UnixMilliseconds(ms)) => {
                v.push(Message::bulk_string(b"PXAT"));
                v.push(Message::bulk_string(format!("{}", ms).as_bytes()));
            }
            Some(ExpireTime::KeepTtl) => {
                v.push(Message::bulk_string(b"KEEPTTL"));
            }
            None => {}
        }

        match other.mode {
            SetMode::Add => {
                v.push(Message::bulk_string(b"NX"));
            }
            SetMode::Replace => {
                v.push(Message::bulk_string(b"XX"));
            }
            SetMode::Set => {}
        }

        if other.get_old {
            v.push(Message::bulk_string(b"GET"));
        }

        Message::Array(Array { inner: Some(v) })
    }