vrl 0.32.0

Vector Remap Language
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use crate::compiler::ExpressionError;
use crate::prelude::{VrlValueConvert, value::Value};
use std::convert::TryInto;

pub(crate) fn to_key<const N: usize>(
    key: Value,
    mode: &str,
    ip_ver: &str,
) -> Result<[u8; N], ExpressionError> {
    let key_bytes = key.try_bytes()?;
    let msg = format!("{mode} mode requires a {N}-byte key for {ip_ver}");
    if key_bytes.len() != N {
        return Err(msg.into());
    }
    key_bytes.as_ref().try_into().map_err(|_| msg.into())
}