Skip to main content

opendal_service_hf/
lib.rs

1// Licensed to the Apache Software Foundation (ASF) under one
2// or more contributor license agreements.  See the NOTICE file
3// distributed with this work for additional information
4// regarding copyright ownership.  The ASF licenses this file
5// to you under the Apache License, Version 2.0 (the
6// "License"); you may not use this file except in compliance
7// with the License.  You may obtain a copy of the License at
8//
9//   http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing,
12// software distributed under the License is distributed on an
13// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14// KIND, either express or implied.  See the License for the
15// specific language governing permissions and limitations
16// under the License.
17
18#![doc = include_str!("../README.md")]
19#![cfg_attr(docsrs, feature(doc_cfg))]
20#![cfg_attr(docsrs, doc(auto_cfg))]
21#![deny(missing_docs)]
22
23/// Primary URI scheme registered for the Hugging Face service.
24pub const HF_SCHEME: &str = "hf";
25
26/// Alias URI scheme registered for the Hugging Face service.
27pub const HUGGINGFACE_SCHEME: &str = "huggingface";
28
29/// Register this service's URI scheme or schemes with an operator registry.
30///
31/// Registration enables scheme-driven construction through
32/// [`opendal_core::Operator::from_uri`] and
33/// [`opendal_core::Operator::via_iter`]. Direct construction through
34/// [`opendal_core::Operator::new`] does not require registration.
35pub fn register_hf_service(registry: &opendal_core::OperatorRegistry) {
36    registry.register::<Hf>(HF_SCHEME);
37    registry.register::<Hf>(HUGGINGFACE_SCHEME);
38}
39
40mod backend;
41mod config;
42mod core;
43mod deleter;
44mod lister;
45mod reader;
46mod writer;
47
48pub use backend::HfBuilder as Hf;
49pub use config::HfConfig;
50
51// Backward-compatible aliases.
52#[doc(hidden)]
53pub type Huggingface = Hf;
54#[doc(hidden)]
55pub type HuggingfaceConfig = HfConfig;
56
57#[cfg(test)]
58mod tests {
59    use super::*;
60
61    #[test]
62    fn type_aliases_are_interchangeable() {
63        let _: Huggingface = Hf::default().repo_id("org/repo");
64        let _: HuggingfaceConfig = HfConfig::default();
65    }
66
67    #[test]
68    fn scheme_constants() {
69        assert_eq!(HF_SCHEME, "hf");
70        assert_eq!(HUGGINGFACE_SCHEME, "huggingface");
71    }
72}