digest_vec <- function(vec, algo=c("md5", "sha1", "crc32", "sha256", "sha512", "xxhash32", "xxhash64", "murmur32"), serialize=TRUE, file = FALSE, length = Inf, skip = "auto", ascii = FALSE, raw = FALSE, seed = 0) {
  require(digest)
  unlist(lapply(
    vec, digest, algo=algo, serialize=serialize, file=file, length=length, skip=skip, ascii=ascii, raw=raw, seed=seed
  ), use.names=FALSE)
}

vector_to_flat_string <- function(vec, sep=",") {
  L <- length(vec)
  if (is.na(vec) && L == 1)
    return (NA_character_)
  if (!L)
    return ("")
  if (L == 1)
    return(as.character(vec))
  pasteC(vec, C=sep)
}
