(target: &str)
| 109 | type Err = InvalidTarget; |
| 110 | |
| 111 | fn from_str(target: &str) -> Result<Self, Self::Err> { |
| 112 | let mut iter = target.split('-'); |
| 113 | let error = || InvalidTarget(target.into()); |
| 114 | |
| 115 | if iter.next().map_or(true, |arch| arch != ARCH) { |
| 116 | return Err(error()); |
| 117 | } |
| 118 | |
| 119 | let vendor = iter.next().map(From::from).ok_or_else(error)?; |
| 120 | |
| 121 | let env = iter |
| 122 | .next() |
| 123 | .and_then(|env| env.parse().ok()) |
| 124 | .ok_or_else(error)?; |
| 125 | |
| 126 | if iter.next().is_some() { |
| 127 | return Err(error()); |
| 128 | } |
| 129 | |
| 130 | let result = Self { env, vendor }; |
| 131 | |
| 132 | if result.memory_model() == MemoryModel::OpenCL { |
| 133 | return Err(error()); |
| 134 | } |
| 135 | |
| 136 | Ok(result) |
| 137 | } |
| 138 | } |
| 139 | |
| 140 | impl std::fmt::Display for SpirvTarget { |
nothing calls this directly
no test coverage detected