1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
use fits::{FitsData, FitsDataArray};
pub trait FitsDataType: Sized {
fn new_fits_array(shape: &[usize], data: Vec<Self>) -> FitsData;
fn bitpix() -> usize;
}
impl FitsDataType for char {
fn new_fits_array(shape: &[usize], data: Vec<char>) -> FitsData {
FitsData::Characters(FitsDataArray {
shape: Vec::from(shape),
data,
})
}
fn bitpix() -> usize {
8
}
}
impl FitsDataType for i32 {
fn new_fits_array(shape: &[usize], data: Vec<i32>) -> FitsData {
FitsData::IntegersI32(FitsDataArray {
shape: Vec::from(shape),
data: data.into_iter().map(Some).collect(),
})
}
fn bitpix() -> usize {
32
}
}
impl FitsDataType for u32 {
fn new_fits_array(shape: &[usize], data: Vec<u32>) -> FitsData {
FitsData::IntegersU32(FitsDataArray {
shape: Vec::from(shape),
data: data.into_iter().map(Some).collect(),
})
}
fn bitpix() -> usize {
32
}
}
impl FitsDataType for f32 {
fn new_fits_array(shape: &[usize], data: Vec<f32>) -> FitsData {
FitsData::FloatingPoint32(FitsDataArray {
shape: Vec::from(shape),
data,
})
}
fn bitpix() -> usize {
32
}
}
impl FitsDataType for f64 {
fn new_fits_array(shape: &[usize], data: Vec<f64>) -> FitsData {
FitsData::FloatingPoint64(FitsDataArray {
shape: Vec::from(shape),
data,
})
}
fn bitpix() -> usize {
64
}
}