diff --git a/syntax/parse.rs b/syntax/parse.rs
index 95dd67c..6e5b36e 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -1,3 +1,4 @@
+use crate::syntax::Atom::*;
 use crate::syntax::{
     attrs, error, Api, Atom, Doc, ExternFn, ExternType, Lang, Receiver, Ref, Signature, Slice,
     Struct, Ty1, Type, Var,
@@ -220,25 +221,13 @@
     match ty {
         RustType::Reference(ty) => parse_type_reference(ty),
         RustType::Path(ty) => parse_type_path(ty),
+        RustType::Slice(ty) => parse_type_slice(ty),
         RustType::BareFn(ty) => parse_type_fn(ty),
         RustType::Tuple(ty) if ty.elems.is_empty() => Ok(Type::Void(ty.paren_token.span)),
-        RustType::Slice(ty) => parse_type_slice(ty),
         _ => Err(Error::new_spanned(ty, "unsupported type")),
     }
 }
 
-fn parse_type_slice(ty: &TypeSlice) -> Result<Type> {
-    let inner = parse_type(&ty.elem)?;
-    let which = match &inner {
-        Type::Ident(ident) if ident == "u8" => Type::Slice,
-        _ => return Err(Error::new_spanned(ty, "unsupported type")),
-    };
-    Ok(which(Box::new(Slice {
-        bracket: ty.bracket_token,
-        inner,
-    })))
-}
-
 fn parse_type_reference(ty: &TypeReference) -> Result<Type> {
     let inner = parse_type(&ty.elem)?;
     let which = match &inner {
@@ -249,9 +238,9 @@
                 Type::Str
             }
         }
-        Type::Slice(inner2) => match &inner2.inner {
-            Type::Ident(ident) if ident == "u8" => Type::SliceRefU8,
-            _ => return Err(Error::new_spanned(ty, "unsupported type")),
+        Type::Slice(slice) => match &slice.inner {
+            Type::Ident(ident) if ident == U8 && ty.mutability.is_none() => Type::SliceRefU8,
+            _ => Type::Ref,
         },
         _ => Type::Ref,
     };
@@ -298,6 +287,14 @@
     Err(Error::new_spanned(ty, "unsupported type"))
 }
 
+fn parse_type_slice(ty: &TypeSlice) -> Result<Type> {
+    let inner = parse_type(&ty.elem)?;
+    Ok(Type::Slice(Box::new(Slice {
+        bracket: ty.bracket_token,
+        inner,
+    })))
+}
+
 fn parse_type_fn(ty: &TypeBareFn) -> Result<Type> {
     if ty.lifetimes.is_some() {
         return Err(Error::new_spanned(
